Pandas函数汇总

一、Pandas数据结构

        1. Series

                1)Series的创建

                        s = Series(a)   # a:列表或NumPy数组或字典

                2)Series的属性

                        s.values   # 值

                        s.index   # 索引

                3)Series的索引

                        (1) 显式索引(闭区间):

                                s[ key ] # 使用index中的元素作为索引值

                                s.loc[ key ] # 使用index中的元素作为索引值

                        (2) 隐式索引(半开区间):

                                s[ n ] # 使用整数作为索引值

                                s.iloc[ n ] # 使用整数作为索引值

                4)Series的切片

                        (1) 显式切片(闭区间):

                                s[key: key1]
                                s.loc[key: key1]

                        (2) 隐式切片(闭区间):

                                s[start: end]
                                s.iloc[start: end]      

                5)Series的属性和方法

                         (1) 属性:

                                s.shape  # 形状
                                s.size  # 元素个数
                                s.index  # 索引
                                s.values  # 值
                                s.dtype  # 元素类型

                         (2) 方法:

                                head(s)  # 查看前几条数据,默认5条

                                tail(s)  # 查看后几条数据,默认5条                    

                                pd.isnull(s)  # 检查是否为空

                                pd.notnull(s)  # 检查是否为非空

                                s.isnull()  # 检查是否为空

                                s.notnull()  # 检查是否为非空       

                6)Series的运算

                        (1) 适用于NumPy的数组运算也适用于Series

                                s + 100 # 加
                                s - 100 # 减
                                s * 100 # 乘
                                s / 100 # 除
                                s // 10 # 整除
                                s ** 2 # 幂

                        (2) Series之间的运算

                                s2 + s1 # 加
                                s2 - s1 # 减
                                s2 * s1 # 乘
                                s2 / s1 # 除
                                s2 // s1 # 整除
                                s2 ** s1 # 幂

                                s1.add(s2, fill_value)

        2. DataFrame

                1)DataFrame的创建

                        df = DataFrame(d) #d:字典

               2) DataFrame属性和方法                      

                        values # 值

                        columns # 列索引

                        index # 行索引

                        shape # 形状

                        head() # 查看前几行数据

                        tail() # 查看后几行数据        

                3)DataFrame的索引

                        (1) 对列进行索引                

                                通过类似字典的方式

                                通过属性的方式

                        (2) 对行进行索引

                                a.loc[ ] # index

                                a.iloc[ ] # 整数

                        (3) 对元素索引的方法

                                使用列索引

                                使用行索引(iloc[3,1]相当于两个参数;iloc[[3,3]] 里面的[3,3]看做一个参数)

                                使用values属性(二维numpy数组)     

                4)DataFrame的切片

                        # 索引: 优先使用列索引, 先取行就需要写loc或iloc
                        # 切片: 优先按行切片, 和Numpy操作类似

                5)DataFrame的运算

                        (1) DataFrame之间的运算

                                df1 + 100 # DataFrame和数的运算

                                df1 + df2 # DataFrame之间的运算

                                df1.add(df2, fill_value) # 自动填充, 再相加

                        (2)Series与DataFrame之间的运算

                                df1 + s # 直接相加

                                df1.add(s, axis) # 使用add函数

二、Pandas层次化索引

        1. 创建多层行索引

                1) 隐式构造

                        index参数传递两个或更多的数组

                        Series也可以创建多层索引

                2) 显示构造

                        pd.MultiIndex.from_arrays(array)

                        pd.MultiIndex.from_tuples(tuple)

                        pd.MultiIndex.from_product(product)

        2. 创建多层列索引(同行索引)

                        除了行索引index,列索引columns也能用同样的方法创建多层索引

        3. 多层索引对象的索引与切片操作

                1)Series的操作

                        s['1班'] # 显式索引
                        s.loc['1班'] # 显式索引

                        s[1] # 隐式索引
                        s.iloc[1] # 隐式索引

                        s['1班': '1班'] # 显式切片
                        s.loc['1班': '2班'] # 显式切片

                        s[1: 4] # 隐式切片
                        s.iloc[1: 5] # 隐式切片

                2)DataFrame的操作

                        df['期中']# 列索引

                        df.loc['1班'] # 行索引

                        df.iloc[1:5]# 行切片

                        df.iloc[:, 1: 5]# 列切片

        4. 索引的堆叠

                df.stack(level,fill_value)

                df.unstack(level,fill_value)

        5. 聚合操作

                 df.sum(axis, level) # 求和

                 df.average(axis, level) # 平均值

                 df.max(axis, level) # 最大值

                 df.min(axis, level) # 最小值

三、Pandas数据合并

        1. 使用pd.concat()级联

                (1) 简单级联

                        pd.concat([df1, df2]) # 上下合并,垂直合并

                        pd.concat([df1, df2], axis=1)  # 左右合并,水平合并

                        pd.concat([df1, df2], ignore_index=True)  # 忽略行索引,重置行索引

                        pd.concat([df1, df2], keys=['x', 'y'])  # 使用多层索引 keys 

                (2) 不匹配级联

                        pd.concat([df3, df4]) # 对应索引没有值的会自动用NaN填充

                        pd.concat([df3, df4], join='outer') # 外连接:补NaN(默认模式), 默认 值 outer,                                                                                 类似并集, 所有数据都会显示

                        pd.concat([df3, df4], join='inner')# 内连接:只连接匹配的项, 交集, 只显示共同的                                                                                列行

        2. 使用append()函数添加

                df3.append(df4, sort)

        3.使用merge()合并

                1) 合并

                        df1.merge(df2)

                2) key的规范化

                        df1.merge(df2, on)

                        df1.merge(df2, left_on, right_on)

                3) 内合并与外合并

                        df1.merge(df2, how)

                4) 添加后缀

                        df1.merge(df2, on, suffixes)

四、Pandas缺失值处理

        1. 判断函数:

                df.isnull().any(axis)  # 常用, 尽可能找到所有的空值

                df.notnull().all(axis)  # 常用,尽可能找到所有的空值

        2. 过滤函数

                df.dropna()  # 默认是删除有空的行

                df.dropna(axis=1)  # 删除有空的列

                df.dropna(how='any')  # 默认值,默认有空就会删除

                df.dropna(how='all', axis=1)  # 所有的值都为空(整行或整列为空),才删除

                df2.dropna(inplace=True) # inplace=True: 表式修改原数据

        3. 填充函数 Series/DataFrame

                df.fillna(value=100)# 填充

                df2.fillna(value=100, limit=1, inplace=True)# limit: 限制对应维度上填充的次数

                df.fillna(method='ffill')  # 用上面数据来填充自己

                df.fillna(method='bfill')  # 用下面数据来填充自己

                df.fillna(method='ffill', axis=1)  # 用左边数据来填充自己

                df.fillna(method='bfill', axis=1)  # 用右边数据来填充自己

五、Pandas处理重复值和异常值

        1. 删除重复行

                df.duplicated(keep='first')  # 保留第一行

                df.duplicated(keep='last')  # 保留最后一行

                df.duplicated(keep=False)  # 标记所有重复行

        2. 映射

                1) replace()函数:替换元素

                2) map()函数: 适合处理某一单独的列

                3) rename()函数:替换索引

                4) apply()函数:既支持 Series,也支持 DataFrame

                5) transform()函数

        3. 异常值检测和过滤

                describe(): 查看每一列的描述性统计量

                df.std() : 可以求得DataFrame对象每一列的标准差

                df.drop(): 删除特定索引

                unique() : 唯一,去重

                query() : 按条件查询

                df.sort_values(): 根据值排序

                df.sort_index(): 根据索引排序

                df.info(): 查看数据信息

        4. 抽样

                使用.take()函数排序

                可以借助np.random.permutation()函数随机排序

六、Pandas数学函数

        1. 聚合函数

                df.count() # 非空值的数量

                df.max() # 最大值,axis=0/1

                df.min() # 最小值, axis=0/1

                df.median() # 中位数

                df.sum() # 求和

                df.mean(axis=1) # 每一行的平均值

                df[0].value_counts() # 统计元素出现次数

                df.cumsum() # 累加

                df.cumprod() # 累乘

                df.var() # 方差

                df.std() # 标准差

        2. 其他数学函数

                df.cov() # 协方差

                df.corr() # 所有属性相关性系数

                df.corrwith(df[2]) # 单一属性相关性系数

七、 数据分组聚合

        df.groupby(by='color') # 使用.groups属性查看各行的分组情况:

        df.groupby(by='color').groups # 根据color进行分组

        df.groupby(by='color').sum() # 分组 + 聚合

八、Pandas加载数据

        1.CSV数据

                df.to_csv('data.csv',sep header, index)# 保存到csv

                pd.read_csv('data.csv',sep,header,index_col) # 加载csv数据

                pd.read_table('data.csv', sep,header,index_col)  # 加载csv数据

         2.excel数据

                df.to_excel('data.xls',sheet_name,header,index)# 保存到excel文件

                pd.read_excel('data.xls',sheet_name,header,names,index_col)# 读取excel

         3.MySQL数据

                df.to_sql('score', conn,index,if_exists) # 保存到MySQL

                pd.read_sql('select * from score',conn,index_col) # 从MySQL中加载数据

九、Pandas分箱操作

        df.Python.values # 对Python列进行分箱

        pd.cut(df.Python, bins) # 等宽分箱

        pd.cut(df.Python,bins,right,labels) # 指定宽度分箱

        pd.qcut(df.Python,q,labels) # 等频分箱

十、Pandas绘图  

        1. 折线图

                s.plot()

        2. 条形图/柱形图

                s.plot(kind='barh')   # 条形图

                s.plot(kind='bar')   # 柱状图

        3. 饼图

                df.plot.pie(subplots, figsize, autopct)

        4. 散点图

                df.plot(kind='scatter', x='A', y='B') # scatter: 散点图

                df.plot.scatter(x='A', y='B')  # A和B关系绘制

        5. 面积图

                df.plot.area(stacked)  # stacked 是否堆叠

        6. 箱型图

                df.plot.box()

                df.plot(kind='box')

        7. 直方图

                df.plot.hist(alpha) # 带透明度直方图

                df.plot.hist(stacked)  # 堆叠图

                df['A'].plot(kind='hist')

                df.plot(kind='hist')


                

                

        

        

                

                

                

                           

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值