分享

pandas实用手册

 文炳春秋 2020-10-18

Pandas最常用的数据对象是数据框(DataFrame)和Series。数据框与R中的DataFrame格式类似,都是一个二维数组。Series则是一个一维数组,类似于列表。数据框是Pandas中最常用的数据组织方式和对象。

series是一种一维数据结构,每一个元素都带有一个索引,与一维数组的含义相似,其中索引可以为数字或字符串。series结构名称:

dataframe是一种二维数据结构,数据以表格形式(与excel类似)存储,有对应的行和列。dataframe结构名称:

1、pandas安装及模块导入

最常用的方法是通过Anaconda安装,在终端或命令符输入如下命令安装:

conda install pandas

若未安装Anaconda,使用Python自带的包管理工具pip来安装:

pip install pandas

模块导入:

import pandas as pd # 导入pandas库print(pd.__version__) # 打印pandas版本信息

2、导入导出数据

#导入pd.read_csv(filename):从CSV文件导入数据pd.read_table(filename):从限定分隔符的文本文件导入数据pd.read_excel(filename):从Excel文件导入数据pd.read_sql(query, connection_object):从SQL表/库导入数据pd.read_json(json_string):从JSON格式的字符串导入数据pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据#导出df.to_csv(filename):导出数据到CSV文件df.to_excel(filename):导出数据到Excel文件df.to_sql(table_name, connection_object):导出数据到SQL表df.to_json(filename):以Json格式导出数据到文本文件

3、查看数据信息

# df:任意的Pandas DataFrame对象
# s:任意的Pandas Series对象

df.head(n):查看DataFrame对象的前n行,默认5行
df.tail(n):查看DataFrame对象的最后n行
df.shape():查看行数和列数
df.dtype:查看数据框每一列的数据类型
df.index:查看索引
df.columns:查看列名
df.info():查看索引、数据类型和内存信息
df.describe():显示描述性统计数据,包括集中趋势、分散趋势、形状等
s.value_counts(dropna=False):查看Series对象的唯一值和计数
df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数

4、数据的选取和过滤

# df:任意的Pandas DataFrame对象# s:任意的Pandas Series对象#选取df[col]:根据列名,并以Series的形式返回列df[[col1, col2,...]]:以DataFrame形式返回多列df.iloc[where]:按整数索引选取数据,选取单个行或行子集df.iloc[:,where]:按整数索引选取数据,选取单个列或列子集df.iloc[where_i,where_j]:按整数索引选取数据,同时选取行和列df.loc[col]:通过轴标签选取数据,选取单个行货一组行df.loc[:,col]:通过轴标签选取数据,选取单列或列子集df.loc[col1,col2]:通过轴标签选取数据,同时选取行和列#过滤df[df['col3']==True]:单独列为基础选择符合条件的数据df[df=='a']:以所有的列为基础选择符合条件的数据df[(df['col2']=='a') & (df['col3']==True)]:多个筛选条件,且多个条件的逻辑为“且”,用&表示df[(df['col2']=='a') | (df['col3']==True)]:多个筛选条件,且多个条件的逻辑为“或”,用|表示df[df['col1'].isin([1,2])]:基于特定值的范围的数据查找df.query('col2=="b"'):按照类似sql的规则筛选数据

5、数据的处理

# df:任意的Pandas DataFrame对象# s:任意的Pandas Series对象df.T:转置数据框,行和列转换df.columns = ['a','b','c']:重命名列名pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组df.dropna():删除所有包含空值的行df.dropna(axis=1):删除所有包含空值的列df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行df.fillna(x):用x替换DataFrame对象中所有的空值s.astype(float):将Series中的数据类型更改为float类型s.replace(1,'one'):用‘one’代替所有等于1的值s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3df.rename(columns=lambda x: x + 1):批量更改列名df.rename(columns={'old_name': 'new_ name'}):选择性更改列名df.set_index('column_one'):更改索引列df.rename(index=lambda x: x + 1):批量重命名索引df.sort_values(['col1']):按值排序,默认为正序,可通过ascending=False指定倒序排序df.sort_index(ascending=False):按索引排序,默认为正序,可通过ascending=False指定倒序排序df.drop_duplicates(['col']):去重重复项,通过指定列设置去重的参照

6、数据的合并和匹配

df1.merge(df2,on='col1',how='inner')df1.append(df2):将df2中的行添加到df1的尾部pd.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

7、数据的分类汇总

# df:任意的Pandas DataFrame对象# s:任意的Pandas Series对象df.groupby(['col2'])['col1'].sum():按指定的列做分类汇总;groupby还可以配合agg,filter,transform,apply等高级函数使用df['col3'].map(lambda x:x*2):将一个函数或匿名函数应用到Series或数据框的特定列df.apply(pd.np.cumsum):将一个函数或匿名函数应用到Series或数据框df.groupby(['col2']).agg({'col1':np.sum,'col3':np.mean}):一次性对多个列做聚合操作pd.pivot_table(df,index=['col2']):以col2列为索引建立数据透视表,默认计算方式为求均值df.count()非NaN的数量df.describe()一次性产生多个汇总统计df.min():最小值df.max():最大值df.idxmax(axis=0, skipna=True):返回含有最大值的index的Seriesdf.idxmin(axis=0, skipna=True):返回含有最小值的index的Seriesdf.quantile(axis=0)计算样本的分位数df.sum(axis=0, skipna=True, level=NaN)返回一个含有求和小计的Seriesdf.mean(axis=0, skipna=True, level=NaN)返回一个含有平均值的Seriesdf.median(axis=0, skipna=True, level=NaN)返回一个含有算术中位数的Seriesdf.var(axis=0, skipna=True, level=NaN)返回一个方差的Seriesdf.std(axis=0, skipna=True, level=NaN)返回一个标准差的Seriesdf.cumsum(axis=0, skipna=True, level=NaN)返回样本的累计和df.cummin(axis=0, skipna=True, level=NaN)返回样本的累计最大值df.cummax(axis=0, skipna=True, level=NaN)返回样本的累计最小值

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多