利用python进行数据清洗
2021-04-15 15:31:15 100 举报
AI智能生成
利用python进行数据清洗
作者其他创作
大纲/内容
数据清洗
数据导入
csv文件
pd.read_csv('文件的全路径')在pycharm中,如果全路径下有中文文件件,报错解决:file=open(r'全路径')\u00A0 \u00A0df=pd.read_csv(file)
excel文件
pa.read_excel('文件的全路径')
数据检查
选择子集
df.loc['行':'行','列':'列']
查看数据
初步查看:df.head()
统计信息,是否有异常值: df.describe()
重命名列名
导入文件时更改
df=pd.read_csv('文件完整路径',name=['自定义列名']
导入文件后更改
列:df.rename(columns={'原列名':'新列名'},inplace=True/Flase)行:df.rename(index={'原行名':'新行名'},inplace=True/Flase)
数据类型转化
导入数据时改变
导入后数据改变
Dataframename['列名'].astype(数据类型)
字符串转化成数值
数据排序
数据缺失
索引
空值\u00A0
df.isnull()
非空值
df.notnull()
计算数量
df.isnull().sum()
处理
填充数据fillna()
使用默认值
空字符串
df['列名'].fillna('')
特殊值0/1
df['列名'].fillna('0')
缺失字符串:用最常见的频数类别代替;df['列名'].value_counts()
通过特征统计值(缺失数据较少)
mean()平均值
df['列名'].fillna(df['列名'].mean())\u00A0 \u00A0\u00A0
mode()众数\u00A0
df['列名'].fillna(df['列名'].mode())\u00A0 \u00A0\u00A0
media()中位数
df['列名'].fillna(df['列名'].media())\u00A0 \u00A0\u00A0
舍弃或者二元化处理(缺失数据较多)
插值法(通过缺失值前后两点的数据估计中间点)
pd.interpolate()
利用缺失值上下填充
无限制df['列名'].fillna(method='ffill') 向上\u00A0\u00A0 \u00A0df['列名'].fillna(method='bfill') 向下\u00A0 \u00A0\u00A0
有限制df['列名'].fillna(method='bfill',limit=2) 向下填充两个\u00A0 \u00A0\u00A0
随机森林算法预测(缺失值较少,推荐优先使用)
删除数据dropna()
根据缺失比例删除行
有就删除 —— df.dropna()
全部是才删除 —— df.dropna(how='all')
至少N个才删除 —— df.dropna(thresh=n)
根据缺失比例删除列
有就删除 —— df.dropna(axis=1)
直接删除列
df.drop(['列名'],axis=1)
重复数据
查找重复值,两列以上的数据,只有每列内容都相同时判定重复,返回的是布尔值.
df.duplicated()
计算重复值数量
df.duplicated().value_counts()
删除
某列中存在数据的唯一值
df['列名'].unique()在已经确定该列不应该存在重复项的前提下
离群点和极端值(异常值)
查找
df.describe()简单的统计分析,常用最大最小值进行观察plt.bar()箱线图
数据转换
日期数据处理
统计日期数据
df['date'].value_counts()
异常日期范围1976-77
异常日期c.1977
无效日期值如空值或错误值
列数据单位不统一
分类数据:用数值代替one-hot编码
两种分类数据:map函数(都适用)map函数进行分类映射也为one-hot编码提供必需步骤
三种以上分类变量:one-hot编码get-dummies
数据字段拆分与合并
分列
合并
提取字符成新列
自定义函数,并且用map函数进行列中每一个数据计算,最后返回给新的列。具体程序看备注和链接
离散化和面元划分
连续数据转离散化,也叫分箱
数据规整化
大小写转换
全部转换成大写
df['列名'].map(str.upper)
全部转化成小写
df['列名'].map(str.lower)
首字母大写
df['列名'].map(str.title)
空格
去除左边空值
df['列名'].map(str.lstrip)
去除右边空值
df['列名'].map(str.rstrip)
去除两侧空格
df['列名'].map(str.strip)
保存结果
df.to_csv('新文件路径',encoding='utf-8')
收藏
0 条评论
回复 删除
下一页