一、读取数据
pd.read_csv(filename) 读取 CSV 文件;
pd.read_excel(filename) 读取 Excel 文件;
pd.read_sql(query, connection_object) 从 SQL 数据库读取数据;
pd.read_json(json_string) 从 JSON 字符串中读取数据;
pd.read_html(url) 从 HTML 页面中读取数据。
读取数据这块比较简单,读什么在read后面加上什么即可。可读文件类型:csv,Excel,SQL,json,html。
二、查看数据
函数 说明
df.head(n) 显示前 n 行数据;
df.tail(n) 显示后 n 行数据;
df.info() 显示数据的信息,包括列名、数据类型、缺失值等;
df.describe() 显示数据的基本统计信息,包括均值、方差、最大值、最小值等;
df.shape 显示数据的行数和列数。
这里的方法应该都不会改变df,应该也可以起到初步筛选数据的作用。
前面我们没有提到过的有:describe(),显示统计信息;shape()显示数据的行数与列数。
三、数据清洗
函数 说明
df.dropna() 删除包含缺失值的行或列;
df.fillna(value) 将缺失值替换为指定的值;
df.replace(old_value, new_value) 将指定值替换为新值;
df.duplicated() 检查是否有重复的数据;
df.drop_duplicates() 删除重复的数据。
dropna()和fillna()以及dup*()二兄弟在前面的数据清洗篇有介绍,注意记忆参数使用即可。
replace()是没有提到过的,注意参数,前一个是老值,后一个是新值。
四、数据选择与切片
df[column_name] | 选择指定的列; |
df.loc[row_index, column_name] | 通过标签选择数据; |
df.iloc[row_index, column_index] | 通过位置选择数据; |
df.ix[row_index, column_name] | 通过标签或位置选择数据; |
df.filter(items=[column_name1, column_name2]) | 选择指定的列; |
df.filter(regex='regex') | 选择列名匹配正则表达式的列; |
df.sample(n) | 随机选择 n 行数据。 |
df实际上可以理解为value为一个有序序列的字典结构,此时key为列名,value为列值,index索引为行,因此直接df[column_name]是可以把列值取出来的。
以上函数不再详述。loc,iloc,ix可以归类记忆。
选择指定的列,方法:filter(items = 列名序列)
列名匹配正则表达式进行筛选:filter(regex=‘regex’)
sample(n):随机选择 n 行数据
五、数据排序
按照指定列值排序:df.sort_values(column_name)
按照多个列值排序:df.sort_values(column_name1, column_name2], ascending=[True, False])
按照索引排序:df.sort_index()
六、数据分组和聚合
df.groupby(column_name) | 按照指定列进行分组; |
df.aggregate(function_name) | 对分组后的数据进行聚合操作; |
df.pivot_table(values, index, columns, aggfunc) | 生成透视表。 |
ps:看到这里,pandas对数据的一些处理操作和SQL有类似哈。
七、数据合并
# 将多个数据框按照行或列进行合并
df = pd.concat([df1, df2])# 按照指定列将两个数据框进行合并
df = pd.merge(df1, df2, on='column_name')
八、数据选择和过滤
df.loc[row_indexer, column_indexer] 按标签选择行和列。
df.iloc[row_indexer, column_indexer] 按位置选择行和列。
df[df['column_name'] > value] 选择列中满足条件的行。
df.query('column_name > value') 使用字符串表达式选择列中满足条件的行。
九、数据统计与描述
df.describe() | 计算基本统计信息,如均值、标准差、最小值、最大值等。 |
df.mean() | 计算每列的平均值。 |
df.median() | 计算每列的中位数。 |
df.mode() | 计算每列的众数。 |
df.count() | 计算每列非缺失值的数量。 |
均值:mean()
中位数:median()
众数:mode()
计算非空值数量:count()