序号 | 内容 |
---|---|
1 | 【Python】Pandas 简介,数据结构 Series、DataFrame 介绍,CSV 文件处理,JSON 文件处理 |
2 | 【Python】Pandas 数据清洗操作,常用函数总结 |
文章目录
1. Pandas 数据清洗
数据清洗是对一些没有用的数据进行处理的过程。
很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。
示例数据如下:
上表包含了四种空数据:
- n/a
- NA
- -
- na
dropna()
方法可以删除包含空字段的行,语法格式如下:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:
axis
:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。how
:默认为 ‘any’ 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。thresh
:设置需要多少非空值的数据才可以保留下来的。subset
:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。inplace
:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。
注意:默认情况下,dropna() 方法返回一个新的 DataFrame,不会修改源数据。
如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数:
isnull()
判断各个单元格是否为空。
import pandas as pd
df = pd.read_csv('property-data.csv')
print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())
fillna()
方法来替换一些空字段:
import pandas as pd
df = pd.read_csv('property-data.csv')
df.fillna(12345, inplace = True)
print(df.to_string())
mean()
、median()
和 mode()
方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)。
import pandas as pd
df = pd.read_csv('property-data.csv')
x = df["ST_NUM"].mean()
df["ST_NUM"].fillna(x, inplace = True)
print(df.to_string())
duplicated()
和 drop_duplicates()
方法可以帮助我们清洗重复数据。如果对应的数据是重复的,duplicated() 会返回 True,否则返回 False。
import pandas as pd
person = {
"name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
"age": [50, 40, 40, 23]
}
df = pd.DataFrame(person)
print(df.duplicated())
程序运行结果为:
0 False
1 False
2 True
3 False
dtype: bool
drop_duplicates()
方法可以删除重复数据
import pandas as pd
persons = {
"name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
"age": [50, 40, 40, 23]
}
df = pd.DataFrame(persons)
df.drop_duplicates(inplace = True)
print(df)
程序运行结果为:
name age
0 Google 50
1 Runoob 40
3 Taobao 23
2. Pandas 常用函数
1. 读取数据
序号 | 函数 | 功能 |
---|---|---|
1 | pd.read_csv(filename) |
读取 CSV 文件 |
2 | pd.read_excel(filename) |
读取 Excel 文件 |
3 | pd.read_sql(query, connection_object) |
从 SQL 数据库读取数据 |
4 | pd.read_json(json_string) |
从 JSON 字符串中读取数据 |
5 | pd.read_html(url) |
从 HTML 页面中读取数据 |
2. 查看数据
序号 | 函数 | 功能 |
---|---|---|
1 | df.head(n) |
显示前 n 行数据 |
2 | df.tail(n) |
显示后 n 行数据 |
3 | df.info() |
显示数据的信息,包括列名、数据类型、缺失值等 |
4 | df.describe() |
显示数据的基本统计信息,包括均值、方差、最大值、最小值等 |
5 | df.shape |
显示数据的行数和列数 |
3. 数据清洗
序号 | 函数 | 功能 |
---|---|---|
1 | df.dropna() |
删除包含缺失值的行或列 |
2 | df.fillna(value) |
将缺失值替换为指定的值 |
3 | df.replace(old_value, new_value) |
将指定值替换为新值 |
4 | df.duplicated() |
检查是否有重复的数据 |
5 | df.drop_duplicates() |
删除重复的数据 |
4. 数据选择和切片
序号 | 函数 | 功能 |
---|---|---|
1 | df[column_name] |
选择指定的列 |
2 | df.loc[row_index, column_name] |
通过标签选择数据 |
3 | df.iloc[row_index, column_index] |
通过位置选择数据 |
4 | df.ix[row_index, column_name] |
通过标签或位置选择数据 |
5 | df.filter(items=[column_name1, column_name2]) |
选择指定的列 |
6 | df.filter(regex='regex') |
选择列名匹配正则表达式的列 |
7 | df.sample(n) |
随机选择 n 行数据 |
5. 数据排序
序号 | 函数 | 功能 |
---|---|---|
1 | df.sort_values(column_name) |
按照指定列的值排序 |
2 | df.sort_values([column_name1, column_name2], ascending=[True, False]) |
按照多个列的值排序 |
3 | df.sort_index() |
按照索引排序 |
6. 数据分组和聚合
序号 | 函数 | 功能 |
---|---|---|
1 | df.groupby(column_name) |
按照指定列进行分组 |
2 | df.aggregate(function_name) |
对分组后的数据进行聚合操作 |
3 | df.pivot_table(values, index, columns, aggfunc) |
生成透视表 |
7. 数据合并
序号 | 函数 | 功能 |
---|---|---|
1 | pd.concat([df1, df2]) |
将多个数据框按照行或列进行合并 |
2 | pd.merge(df1, df2, on=column_name) |
按照指定列将两个数据框进行合并 |
8. 数据选择和过滤
序号 | 函数 | 功能 |
---|---|---|
1 | df.loc[row_indexer, column_indexer] |
按标签选择行和列 |
2 | df.iloc[row_indexer, column_indexer] |
按位置选择行和列 |
3 | df[df['column_name'] > value] |
选择列中满足条件的行 |
4 | df.query('column_name > value') |
使用字符串表达式选择列中满足条件的行 |
9. 数据统计和描述
序号 | 函数 | 功能 |
---|---|---|
1 | df.describe() |
计算基本统计信息,如均值、标准差、最小值、最大值等 |
2 | df.mean() |
计算每列的平均值 |
3 | df.median() |
计算每列的中位数 |
4 | df.mode() |
计算每列的众数 |
5 | df.count() |
计算每列非缺失值的数量 |