pandas数据清洗常用方法总结

数据清洗常用方法

  • 一、数据读取与保存
  • 二、数据查看
  • 三、索引设置与修改
  • 四、选择与过滤
  • 五、缺失值重复值处理
  • 六、异常值处理
  • 七、行列增加与删除
  • 八、拼接与合并
  • 九、统计与排序
  • 十、重塑与轴向旋转
  • 十一、数据运算
  • 十二、数据类型变换
  • 十三、分组运算

一、数据读取与保存

  1. pd.read_csv()/df.to_csv() 从CSV文件读取数据
  2. pd.read_excel()/df.to_excel() 从Excel文件读取数据
  3. pd.read_json()/df.to_json()
  4. pd.read_html()
  5. pd.read_clipboard()
  6. 数据库读取
    连接MySQL数据库的基本语句如下:
import pymysql
# 建立数据库连接
conn = pymysql.connect(host="localhost",user="username",password="password",database="database_name",port = 3306
)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql_query = "SELECT * FROM table_name"
cursor.execute(sql_query)
# 获取查询结果
result = cursor.fetchall()
# 关闭游标和连接
cursor.close()
conn.close()使用create_engine连接MySQL数据库的基本语句如下:
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+mysqlconnector://username:password@localhost/database_name')
df = pd.read_sql_query('SELECT * FROM table_name', engine) 读取
df.to_sql('',engine,index = False,if_exists = 'replace')  #保存

连接SQL Server数据库的基本语句如下:

import pyodbc
# 建立数据库连接
conn = pyodbc.connect('DRIVER={SQL Server};''SERVER=server_name;''DATABASE=database_name;''UID=username;''PWD=password'
)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql_query = "SELECT * FROM table_name"
cursor.execute(sql_query)
# 获取查询结果
result = cursor.fetchall()
# 关闭游标和连接
cursor.close()
conn.close()使用create_engine连接SQL Server数据库的基本语句如下:
from sqlalchemy import create_engine
# 建立数据库连接
engine = create_engine('mssql+pyodbc://username:password@server_name/database_name')
# 执行SQL查询语句
sql_query = "SELECT * FROM table_name"
result = engine.execute(sql_query)
# 获取查询结果
result_list = result.fetchall()
# 关闭连接
engine.dispose()

二、数据查看

  1. df.head() 查看前n行数据,默认为前5行
  2. df.tail() 查看最后n行数据,默认为最后5行
  3. df.sample() 随机采样
  4. df.shape 形状
  5. df.info() 查看数据的基本信息
  6. df.describe() 统计描述性信息,可查看数值型和类别型
  7. df.T 转置
  8. df.values 值
  9. df.index 索引
  10. df.columns 列名
  11. df.types 数据类型

三、索引设置与修改

  1. df.set_index() 将某列设置为索引
  2. df.reset_index() 恢复默认索引
  3. df.reindex() 重新索引
  4. df.index = []
  5. df.columns = []
  6. df.rename(columns = {‘’:‘’},inplace = True) 修改某列名字
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)# 将列'A'设置为索引
df.set_index('A', inplace=True)
# 恢复默认索引
df.reset_index(inplace=True)
# 重新索引
new_index = ['a', 'b', 'c', 'd']
df_reindexed = df.reindex(new_index)
# 修改索引
new_index = ['w', 'x', 'y', 'z']
df.index = new_index
# 修改列名
new_columns = ['Column1', 'Column2', 'Column3']
df.columns = new_columns
# 修改列名为'A'为'NewColumn'
df.rename(columns={'Column1':'NewColumn'}, inplace=True)

四、选择与过滤

  1. df[‘column_name’] 选择指定列
  2. df[[‘column1’, ‘column2’]] 选择多列
  3. df.loc[row_index] 选择指定行
  4. df[df[‘column’] > 10] 选择column列大于10的行
  5. df.loc[‘a’:‘c’] 选择多行,显示索引,左闭右闭
  6. df.loc[‘a’:‘c’,[‘A’:‘C’]] 选择特定行和列
  7. df.loc[‘a’:‘c’,‘A’:‘C’]
  8. df.iloc[3:6]
  9. df.iloc[1:3,4:8] 隐式索引,左闭右开
  10. df.loc[df[‘A’]>0,df.loc[‘a’]>2] 选择a行大于2,A列大于0的所有行
  11. df.loc[df[‘column’] > 10, [‘column1’, ‘column2’]]
  12. df[df[‘column’].notnull()] 选择某列非空的所有行

五、缺失值重复值处理

  1. df.isnull()/df.notnull() 缺失值判断
  2. df.isnull().sum() 缺失值统计,返回一个以 df各列值为nan个数为元素的序列
  3. df.isnull().sum().sum() 返回 df所有值为nan的个数和。
  4. df.dropna() 删除指定列
  5. df.duplicated() 重复值
  6. df.dupicated().sum()
  7. df.drop_duplicated() 重复值删除, 保留第一次出现的行数据,删除其他的重复行数据 keep=‘first’ 可缺省
  8. df.drop_duplicated(keep=‘last’) # 保留最后一次出现的行数据,删除其他的重复行数据
  9. df.drop_duplicated(subset=[‘sex’,‘year’],keep=‘last’) # 移除以指定列(‘sex’,‘year’)所谓判断重复标准的的行
  10. df.replace() 替换
  11. df.fillna(0,inplace=False) # 将 DataFrame中的所有 NaN填充为 0 inplace缺省时默认 inplace=False
  12. df.fillna(0,inplace=True) # 就地修改
  13. df[0].fillna(df[0].mean()) # 填充第 1列,使用第一列的统计非 NaA的平均值。
  14. df[0:2]=df[0:2].fillna(‘enene’) # 填充第 1-3列,使用’enene’
  15. df2.fillna({0:0,2:‘aa’}) # 给指定的列填充 第一列的填充值为 0,第 3列的填充值为 ‘aa’
  16. df.loc[0].fillna(df.loc[0].mean(),inplace=True) # 填充第 1行,使用第一行的统计非 NaA的平均值。
  17. df.loc[0:2]=df.loc[0:2].fillna(‘enene’) # 填充第 1-3行,使用’enene’
  18. df.dropna(how=‘any’,axis=0) 删除含有 NaN的整行数据 当 how='any’时,可以缺省
  19. df.dropna(how=‘all’,axis=0) 删除所有值为 NaN的整行数据
  20. df.dropna(how=‘any’,axis=1) 删除含有 NaN的整列数据 当 how='any’时,可以缺省
  21. df.dropna(how=‘all’,axis=1) 删除所有值为 NaN的整列数据

六、异常值处理

  1. df.replace(‘’,‘未知’) 将 df中所有的 ""替换为 “未知”
  2. df.replace([‘’,2001],[‘未知’,2002]) 将 df中所有的 ""替换为 “未知”,将 2001替换为 2002
  3. df.replace({‘’:‘未知’,2001:2002}) 将 df中所有的 ""替换为 “未知”,将 2001替换为 2002

七、行列增加与删除

  1. df[‘c’] = [1,1,1] 增加行
  2. df.loc[‘c’] = [1,1,1] 增加行
  3. df[‘column4’] = [3,5,7,8] 增加列
  4. df.drop([‘one’,‘two’],axis = 0)
  5. df.pop()
  6. df.insert() 插入

八、拼接与合并

  1. df = df.append(df1) 纵向拼接
  2. pd.concat([df1,df2],axis = 1) 纵向拼接
  3. pd.concat([df1,df2],axis = 0) 横向拼接
  4. pd.merge(left,right,on = ‘key’) 主键合并
  5. df1.join(df2)

九、统计与排序

  1. S.value_counts() 计数
  2. S.nlargest()
  3. S.nsmallest()
  4. S.unique() 唯一值
  5. S.nunique() 唯一值数量
  6. df.sum()
  7. df.mean()
  8. df.var()
  9. df[‘column’].mean() 计算某列均值
  10. df[‘column’].sum() 计算某列总和 max() 最大值 min() 最小值
  11. data.count()
  12. df.sort_index() 按照索引排序
  13. df.sort_values(by=‘column’) 按照某列值排序
  14. df.sort_values(by=‘column’,by=‘column’) 按列降序排序

十、重塑与轴向旋转

  1. df.stack() 数据堆叠
  2. df.unstack() 数据展开
  3. df.pivot_table(values=‘value’, index=‘index_column’, columns=‘columns’) 数据透视表

十一、数据运算

  1. s1+s2
  2. df1 + df2 索引自动对齐
  3. s.map() 映射
  4. s.apply()
  5. df.apply(function)
  6. df.applymap()

十二、数据类型变换

  1. s.astype(str) 转换为指定类型
  2. pd.to_numeric()
  3. pd.to_datetime() 将日期字符串转换为日期类型

十三、分组运算

  1. df.groupby(‘column’).mean() 按列进行分组并计算统计量
  2. df.groupby([‘column1’, ‘column2’]).sum() 按多列进行分组并计算统计量
  3. pd.groupby().std() #var,min,max,sum
  4. df.groupby().agg([np.mean]) 标准的函数 std,var,min,max
  5. df.groupby().agg([ppp]) 自定义函数
  6. df.groupby().agg([np.mean,ppp]) 多个聚合函数
  7. df.pivot_table() 透视表,先groupby,再求mean
  8. pd.crosstab() 交叉表,统计分组频率

详细讲解请看历史文章
Python学习——pandas库的使用之series及DataFrame创建、查看、切片、运算
Python学习——缺失值、重复值处理及替换
Python学习——数据排序及分箱pd.cut\pd.qcut
Python学习——数据分组统计、分组运算及透视
Python学习——时间序列
Python学习——字符串序列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S初级入门系列之一-概述

一、前言 K8S经过多年的发展,构建了云原生的基石,成为了云原生时代的统治者。我将用三个博客系列全面,循序渐进的介绍K8S相关知识。 初级入门系列,主要针对K8S初学者,以及希望对K8S有所了解的研发人员,重点…

机器学习术语解析与应用(二)

文章目录 🍀目标函数(Objective Function)🍀GPU加速(GPU Acceleration)🍀迁移学习(Transfer Learning)🍀自然语言处理(Natural Language Processi…

1 快速构建mybatis项目

1.1 使用Maven的quickstart框架 注意是不出现w的quickstart&#xff1a; 1.2 加入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</s…

设计模式之策略模式

定义一系列的算法&#xff0c;把他们一个个封装起来&#xff0c;并且使他们可以相互替代。本模式使得算法可独立于使用它的客户而变化! 痛点 策略模式可以很好解决众多if问题 如以下&#xff1a; package com.tao.YanMoDesignPattern.Strategy.notPattern;/*** Author Mi_Ta…

如何让ChatGPT学习私有化知识,并且保留部分对话功能

问题情境 情景&#xff1a;比如我希望用 GPT 做一个产品的客服&#xff0c;现在有一些相关文档&#xff0c;如何让 GPT 学习到产品信息呢&#xff1f; 并且还具备正常对话功能 一个方案是直接把产品信息当做输入喂给GPT&#xff0c;但是ChatGPT/GPT-4/LLMs 一般都有输入长度的…

安装 PyCharm

网址&#xff1a;Download PyCharm: Python IDE for Professional Developers by JetBrains 安装文件&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 正在安装&#xff1a; 安装完成&#xff1a;

pytest钩子函数(三):用例收集钩子

前言 pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预&#xff0c;根据需求去开发对应的插件&#xff0c;以满足自己的使用场景。 01 什么是钩子函数&#xff1f; 钩子函数在pytest称之为Hook函数,它pytes…

Redis缓存击穿

Redis缓存击穿是指在使用Redis作为缓存时&#xff0c;某个热点数据过期或不存在&#xff0c;导致大量请求直接打到后端存储系统&#xff08;例如数据库&#xff09;&#xff0c;使得后端系统压力骤增&#xff0c;性能下降的情况。这种情况通常发生在热点数据失效的瞬间。 缓存…

【高阶数据结构】B树

文章目录 一、B-树1. 常见的搜索结构2. B树概念3. B-树的查找4. B-树的插入分析 二、B树和B*树1. B树2. B*树 三、B-树的应用1. 索引2. MySQL索引简介2.1 MyISAM2.2 InnoDB 一、B-树 1. 常见的搜索结构 种类数据格式时间复杂度顺序查找无要求O(N)二分查找有序O(log2N)二叉搜索…

TCP/IP网络编程 第十九章:Windows平台下线程的使用

内核对象 要想掌握Windows平台下的线程&#xff0c;应首先理解“内核对象”&#xff08;Kernel Objects&#xff09;的概念。如果仅介绍Windows平台下的线程使用技巧&#xff0c;则可以省略相对陌生的内核对象相关内容。但这并不能使各位深入理解Windows平台下的线程。 内核对…

RocksDB架构

1、rocksdb是什么? RocksDB中文网 | 一个持久型的key-value存储 rocksdb是一种KV存储引擎&#xff0c;常用于数据库存储数据&#xff0c;无法直接使用&#xff0c;没有提供sql命令&#xff0c;通过调用rocksdb提供的api进行数据库的读写等操作。 rocksdb是以leveldb为基础开…

Linux一些问题,结合gpt,自己复习用

&#xff08;一&#xff09;请介绍linux以及它和windows的区别 &#x1f427; Linux是一个开源的操作系统&#xff0c;它基于UNIX&#xff0c;并具有强大的自由度和灵活性。它被广泛用于服务器环境和嵌入式系统中。Linux有许多不同的发行版&#xff0c;例如Ubuntu、Debian、Fe…

聊聊spring-cloud的负载均衡

聊聊spring-cloud的负载均衡 1. 选择合适的负载均衡算法2. 合理设置超时时间3. 缓存服务实例列表4. 使用断路器5. 使用缓存Spring Cloud负载均衡组件对比RibbonLoadBalancerWebClient对比 总结 在微服务架构中&#xff0c;负载均衡是非常重要的一个环节&#xff0c;可以有效地提…

S32K144 GPIO外设分析

1. S32K144 GPIO外设特性 下面的内容来自于S32K用户手册的翻译&#xff0c;或者网上关于S32K系列的一些pdf文件介绍。有些内容可能会出现理解不到位或者翻译错误方面&#xff0c;如果大家有疑问最好可以查阅用户手册。 GPIO和PORT的数量 从用户手册&#xff0c;对于PCR&#x…

React Dva项目中路由跳转的方法

接下来 我们来看看路由跳转 先打开 我们Dva项目 然后我们需要在routes 下创建一个自己的路由&#xff0c;如果您尚未掌握在Dva项目中创建路由&#xff0c;可以参考我的文章 React 在Dva项目中修改路由配置&#xff0c;并创建一个自己的路由 然后 我的项目有两个路由 router.js…

ASFF Learning Spatial Fusion for Single-Shot Object Detection 论文学习

1. 解决了什么问题&#xff1f; 目标检测取得了显著成绩&#xff0c;但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言&#xff0c;各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比&…

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性 VMware Workstation Tech Preview 2023 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation-18/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

OpenAI的Function calling 和 LangChain的Search Agent

OpenAI的Function calling openai最近发布的gpt-3.5-turbo-0613 和 gpt-4-0613版本模型增加了function calling的功能&#xff0c;该功能通过定义功能函数&#xff0c;gpt通过分析问题和函数功能描述来决定是否调用函数&#xff0c;并且生成函数对应的入参。函数调用的功能可以…

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…

Java面试题总结记录(3)—— Spring篇

1、什么是Spring&#xff1f; Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对 构建J2EE平台的web应用。 Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过 POJO为基础的编程 模型促进良好的编程习惯 2、你们项…