pandas 数据清洗
一,数据预处理
准备工作
首先 安装pandas
1 | pip install pandas |
导包 pandas
1 | import pandas as pd |
加载 数据集,代码如下
1 | data = pd.read_csv('../data/move.csv') |
Pandas 提供了一些选择的方法,
查看一列的一些基本统计信息:
data.columnname.describe()
选择一列:
dada['columnname']
选择一列的前几行数据:
data['columnname'][:n]
选择多列:
data[['column1', 'column2']]
Where 条件过滤:
data[data['columnname'] > condition]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import pandas as pd
data = pd.read_csv('movie_metadata.csv')
# 打印 前5行数据
# print(data.head())
# 打印 某列 前5行
# print(data['director_name'][:5])
# 打印 多列 数据
# print(data[['director_name', 'aspect_ratio']])
# 打印 多列 5行 数据
# print(data[['director_name', 'aspect_ratio']][:5])
处理缺失数据
一般有这几个方法,
为缺失数据赋值默认值
去掉/删除缺失数据行
去掉/删除缺失率高的列
添加默认值
我们去掉NaN值,我们检查了“country”列,这一列表示地区,然而有一些电影没有提供地区,我们将 ”country“ 整个列,使用 “” 空字符串替换了,或者,我们可以使用”None Given” 进行替换,
1
2# 添加默认值 ''
# data.country= data.country.fillna('')使用数字类型的数据(计算电影的平均值)
1
data.duration = data.duration.fillna(data.duration.mean())
如果想了解更多 fillna() 的详细信息参考pandas.DataFrame.fillna。
删除不完整的行
假设,我们想删除任何有缺失值的行,这种操作太据侵略性,但是我们可以根据的我们的需要进行扩展
删除任何包含NA值的行
1
data.dropna()
当然我们可以删除一整行的值为NA:
1
data.dropna(how='all')
我们可以加条件,在一行中有多少非空值的数据是可以保留下来的(例子中,行数据中至少有5个非空值)
1
data.drop(thresh=5)
比如说,我们不想要不知道电影上映时间的数据:
1
data.dropna(subset=['title_year'])
上面的subset 参数允许我们选择想要检查的列,如果是多个列,可以使用列名的list 作为参数
删除不完整的列
我们可以使用axis=1 参数,这个意思就是操作列而不是行,(如果我们不传参数axis,默认是axis=0)
删除一整列为NA的列:
1
data.drop(axis=1, how='all')
删除任何包含空值的列
1
data.drop(axis=1,how='any')
这里也可以使用上面一样的threshold 和subset 更多的详情和案例,请参考pandas.DataFrame.dropna。
规范化数据类型
1 | #数据类型转换:字符串转换为日期 |
调整后
修改列名
1 |
|
选择部分子集
1 | #选择子集,选择其中一列 |
** 利用切片筛选数据功能 df.loc **
1 | subDataDF1=DataDF.loc[:,"InvoiceDate"] |
1 | subDataDF2=DataDF.loc[0:9,:] |
1 | subDataDF3=DataDF.loc[1:9,"StockCode":"CustomerID"] |
逻辑问题需要筛选
还是Dataframe.loc这个函数的知识点。
由于loc还可以判断条件是否为True
1 | DataDF.loc[:,'UnitPrice']>0 |
1 | #删除异常值:通过条件判断筛选出数据 |
格式化处理
1 | str(). |
空格分割
1 | #定义函数:分割InvoiceDate,获取InvoiceDate |
在赋值回去
1 | DataDF.loc[:,'InvoiceDate']=splitSaletime(DataDF.loc[:,'InvoiceDate']) |
处理缺失值
1 | # 再一次提醒检查缺失数据 |
去除缺失值的知识点:
DataFrame.dropna
DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False)
1 | # 默认(axis=0)是逢空值剔除整行,设置关键字参数axis=1表示逢空值去掉整列 |
以上内容,参考于https://zhuanlan.zhihu.com/p/32572237 这篇知乎,侵权必删,
以上内容,参考于https://zhuanlan.zhihu.com/p/60241672 这篇知乎,侵权必删,