pandas实用手册

讨论 hello2060
Lv2 初级炼丹师
发布在 Pandas   2276   0
讨论 hello2060   2276   0

    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'代替3
    df.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的Series
    df.idxmin(axis=0, skipna=True):返回含有最小值的index的Series
    df.quantile(axis=0)计算样本的分位数
    df.sum(axis=0, skipna=True, level=NaN)返回一个含有求和小计的Series
    df.mean(axis=0, skipna=True, level=NaN)返回一个含有平均值的Series
    df.median(axis=0, skipna=True, level=NaN)返回一个含有算术中位数的Series
    df.var(axis=0, skipna=True, level=NaN)返回一个方差的Series
    df.std(axis=0, skipna=True, level=NaN)返回一个标准差的Series
    df.cumsum(axis=0, skipna=True, level=NaN)返回样本的累计和
    df.cummin(axis=0, skipna=True, level=NaN)返回样本的累计最大值
    df.cummax(axis=0, skipna=True, level=NaN)返回样本的累计最小值
    版权声明:作者保留权利,不代表意本站立场。如需转载请联系本站以及作者。

    参与讨论

    回复《 pandas实用手册

    EditorJs 编辑器

    沙发,很寂寞~
    反馈
    to-top--btn