Pandas作为python的库,包含易于使用的数据结构,是一个强大数据分析的工具
Pandas的主要数据结构有Series和DataFrame。Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的一组标签组成。DataFrame是一个表格型数据结构,它含有一组有序的列,每列可以是不同的值类型。
1 | import pandas as pd |
导入数据
方法 | 说明 |
---|---|
pd.read_csv(filename) | 从CSV文件导入 |
pd.read_table(filename) | 从文本分割文件 (比如 TSV)导入 |
pd.read_excel(filename) | 从Excel文件导入 |
pd.read_sql(query, connection_object) | 从SQL表中导入 |
pd.read_json(json_string) | 从json字符串中导入 |
pd.read_html(url) | 从url地址中导入 |
pd.read_clipboard() | 从剪切板中导入 |
pd.DataFrame(dict) | 从字典中导入 |
导出数据
方法 | 说明 |
---|---|
df.to_csv(filename) | 导出到CSV文件 |
df.to_excel(filename) | 导出到excel文件中 |
df.to_sql(table_name, connection_object) | 写入到SQL表中 |
df.to_json(filename) | 以json格式导出到文件中 |
创建测试集合
方法 | 说明 |
---|---|
pd.DataFrame(np.random.rand(20,5)) | 创建20行,5列的值为浮点数的DataFrame |
pd.Series(my_list) | 使用列表my_list创建series |
df.index = pd.date_range(‘1900/1/30’, periods=df.shape[0]) | 创建日期索引 |
查看/检视数据
方法 | 说明 |
---|---|
df.head(n) | 查看DataFrame前n行数据 |
df.tail(n) | 查看DataFrame后n行数据 |
df.shape() | 查看DataFrame的行数和列数 |
df.info() | 查看DataFrame索引(Index), 数据类型(Datatype) 和内存信息(Memory information) |
df.describe() | DataFrame的摘要信息 |
s.value_counts(dropna=False) | 查看series中唯一值和总数 |
df.apply(pd.Series.value_counts) | 查看DataFrame中每一列的唯一值和总数 |
数据选取
方法 | 说明 |
---|---|
df[col] | 选取标签为col的数据,并以series形式返回 |
df[[col1, col2]] | 返回一个新的DataFrame,包含原df中的标签col1,col2的数据 |
s.iloc[0] | 按位置进行选取 |
s.loc[‘index_one’] | 按标签进行选取 |
df.iloc[0,:] | 选取第一行 |
df.iloc[0,0] | 选取第一行第一列数据 |
数据清理
方法 | 说明 |
---|---|
df.columns = [‘a’,‘b’,‘c’] | 重命名列名 |
pd.isnull() | 检查是否是null值,以数组形式返回 |
pd.notnull() | pd.isnull()的相反操作 |
df.dropna() | 删除掉包含null值的行 |
df.dropna(axis=1) | 删除包含null的列 |
df.dropna(axis=1,thresh=n) | 删除掉非null值少于n的列 |
df.fillna(x) | 使用x替换所有null值 |
s.fillna(s.mean()) | 使用平均值替换所有null值 |
s.astype(float) | 将series数据类型转换成float类型 |
s.replace(1,‘one’) | 将所有等于1的值替换成one |
s.replace([1,3],[‘one’,‘three’]) | 使用one替换1,three替换3 |
df.rename(columns=lambda x: x + 1) | 使用lambda重命名全部的列名 |
df.rename(columns={‘old_name’: ‘new_ name’}) | 部分列名进行重命名 |
df.set_index(‘column_one’) | 将column_one设置为索引 |
df.rename(index=lambda x: x + 1) | 使用lambda重置索引 |
过滤,排序,分组
方法 | 说明 |
---|---|
df[df[col] > 0.5] | 返回标签为col的列中所有大于0.5的 |
df[(df[col] > 0.5) & (df[col] < 0.7)] | 返回标签为col的列中所有大于0.5的小与0.7的数据 |
df.sort_values(col1) | 按照标签col1进行升序排序 |
df.sort_values(col2,ascending=False) | 按照标签col2进行降序排序 |
df.sort_values([col1,col2],ascending=[True,False]) | 按照col1圣墟,col2降序进行排序 |
df.groupby(col) | 返回按列col分组后的数据 |
df.groupby([col1,col2]) | 返回按列col1,col2分组后的数据 |
df.groupby(col1)[col2] | Returns the mean of the values in col2, grouped by the values in col1 (mean can be replaced with almost any function from the statistics section) |
df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean) | 创建按照col1聚合,并计算col2和col3平均数的透视表 |
df.groupby(col1).agg(np.mean) | 使用col1分组后,计算每一个列的平均数 |
df.apply(np.mean) | 计算每一列的平均数 |
nf.apply(np.max,axis=1) | 计算每一行的最大值 |
连接/组合
方法 | 说明 |
---|---|
df1.append(df2) | 将df1每一行追加到df2中 (df1和df2每一列应该相同) |
pd.concat([df1, df2],axis=1) | 将df1中的每一列追加到df2中 (df1和df2行应该相同) |
df1.join(df2,on=col1,how=‘inner’) | SQL-style连接 |
统计
方法 | 说明 |
---|---|
df.describe() | DataFrame每一列的汇总统计信息 |
df.mean() | 返回每一列的平均数 |
df.corr() | 返回列之间的相关性 |
df.count() | 返回每一列中非null值数量 |
df.max() | 返回每一列中最大值 |
df.min() | 返回每一列中最小值 |
df.median() | 返回每一列的中值 |
df.std() | 返回每一列的标准偏差 |