pandas 知识点总结(part1)

本文详细介绍了Pandas库中的Series和DataFrame数据结构,包括它们的一维数组特性、索引操作、转换、重新设置索引、数据对齐、算术运算、函数应用、排序和统计功能,以及如何处理缺失值和重复标签。
摘要由CSDN通过智能技术生成

两个数据结构: Series 和 DataFrame

Series

一维数组

        obj.values        获取值

        obj.index          获取索引

obj['索引']        获取一个值        obj[[索引1,索引2,索引3...]]        获取多个值

        做运算时会保留索引值

将字典转换为Series数组:

        如果数据被存放到一个字典里,dict1       

                Sdict = pd.Series(dict1)        key会是索引,value是值

重新设置索引:obj2 = pd.Series(Sdict ,index=[一个其他索引列表])

        索引会以其他列表的内容来显示,如果这个索引没找到原值,则显示NaN

                                                        如果原先的值在心列表里没有对应的索引,则不会显示

pd.isnull(obj)        输出布尔数组:有NaN或者缺失的会显示True        或写法:obj.isnull()

pd,notnull(obj)        输出布尔数组,不是空的会显示True

name属性

        obj.name = '        '        对value列赋名

        obj.index.name = '        '        对索引列赋名

重新设置索引        obj.index = [索引列表]

DataFrame

        表格型的数据结构,既有行索引也有列索引,相当于用Series组成的字典

frame.head(        )         选取前五行数据

按照指定的列名排序

        pd.DataFrame(data, columns=['year', 'state', 'pop'])

        如果新的索引没有值,就会用NaN补足

显示列名:        frame.columns

索引某一列:        frame['列名']

                           frame.列名        这个列名必须得是一个合理的Python变量名才能用

loc属性

        frame.loc['索引名'] = 数据        数据这里可以直接赋标量

                                                         如果赋值的是一个数组,要求长度一样,索引一样(按照索引匹配)

a==b两个数组做判断输出的会是一个布尔数组

删除

        del frame['列名']

将嵌套字典传递给DataFrame:

        外层字典的键作为列,内层作为行索引

转置:        frame.T

索引对象

        负责管理轴标签,轴名称等其他 元数据

构建Series或者DataFrame时,生成的索引会自动转换成一个Index

        索引是不可变的,不能修改                可以排序                索引可以传递

pandas的index可以包含重复的标签

基本功能

        重新索引

                obj2 = obj.reindex([新索引的列表])        columns=列表

                新索引中如果有obj不存在的索引,对应的obj2为nan

                这个办法可以修改索引和列名排序,只传递一个序列时,会重新索引结果的行

        丢弃指定轴上的项

                new_obj = obj.drop('索引')        单个索引

                new_obj = obj.drop(['索引1','索引2'...])         多个索引

                        以上默认按照行标签 也就是axis=0,可省略

                        若要按照列标签:则axis=1,或axis='columns'传递一下参数

                如果drop(列名, inplace=True)        这个参数会销毁所有被删除的数据

        索引,选取和过滤

        如果索引不是整数,被命名成了新的索引,也可以通过默认索引0,1,2...来获取的

        利用标签的切片(与python不同:前闭后开).是包含末端的  [1:3] 结果是包含3的

        获取多行/多列

               frame[[索引1(或列1),索引2(或列2)...]]

        利用布尔型数组来选取数据        data[data>5] = 6        先选取,再赋值

        使用loc(轴标签)或iloc(整数索引)来选取

                data.loc[['行索引1','行索引2']  ,  ['列名1','列名2']]

                data.iloc[[2,3],[3,0,1]]        选择第3,4行的第4,1,2列  (重新排序)

                loc[行名]                loc[ : ,列名]

        切片也可以,多行(或多列)中间用冒号,或者省略其中一个

        选择单一的标量:data.at[行名,列名]        或        data.iat[行,列]        这里是索引(整数)

注意最后的get_value(行标签)        如果存在,则返回值,如果不存在则返回None

                                                        跟loc不一样的是...loc选取不存在的列会报错

                        注意:不晓得为什么会报错...

整数索引

        对Series索引的时候

                1.如果没有设置索引,只有默认索引,不能用负数索引        data[-1]这是不可以的

                2.如果设置了非整数索引,则可以使用data[-1]

 算术运算和数据对齐

        不同dataframe之间运算,对于结果:只会计算相同索引,不同的索引后面的值会变成NaN

在算术方法中填充值
        df2.loc[1, 'b'] = np.nan        # 第二行的B列填充NaN

        df1.add(df2, fill_value=0)        # df1 df2按照索引相加,索引不重复的保留原值

         1/df1        和         df1.rdiv(1)        是等价的

        

 DataFrameSeries之间的运算

注意: DataFrame和Series的所有操作,会广播

        具体为:将Series的索引匹配到DataFrame的列,沿着行一直向下广播

        如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集

函数应用和映射

        NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象

                诸如abs这种基础函数:np.abs(frame)

        DateFrame 的apply方法:将函数应用到由各列或行所形成的一维数组上(不常用)

               例如: frame.apply(f)                 f表示函数,apply里面可以传递参数axis = 'columns'

        如果想得到frame中各个浮点值的格式化字符串,使用applymap即可

               frame.applymap(格式化函数)              

                         format = lambda x: '%.2f' % x

                        frame.applymap(format)

        排序(sort_index)和排名(sort_values)

                1.obj.sort_index(  )                默认按照行轴axis=0      按照列名排序axis=1

                    按照索引排序                   默认升序排序      想降序排序可以写成ascending=False

                2.obj.sort_values(  )                缺失值会被放到Series的末尾

                     按照值排序            按照单列的值排序:参数为 by='列名'

                                                   按照多列的值排序:参数为 by=['列名1','列名2',...]

                3.obj.rank( )

                         默认情况:通过“为各组分配一个平均排名”的方式破坏平级关系

                        参数 method='first'表示:根据值在原数据中出现的顺序给出排名

                        默认升序排序      想降序排序可以写成ascending=False

                        dataframe中可以指定轴 axis=0,1,2...

        带有重复标签的轴索引

                obj.index.is_unique         判断索引是否唯一

汇总和计算描述统计

        pandas对象拥有一组常用的数学和统计方法,例如(sum和mean)都是基于没有缺失数据的假设构建的.

        例如:sum计算时会进行求和运算,NA会自动排除

         

        相关系数与协方差 
                DataFrame的corr cov 方法将以 DataFrame 的形式分别返回完整的相关系数或协方差
矩阵
         唯一值、值计数以及成员资格

Series        uniques = obj.unique( )        获取唯一值

                对结果进行排序        uniques.sort()

                计算Series中各值出现的频率:        obj.value_counts( )        默认按照降序排序

一个顶级的pandas办法(可以适用于所有数组和序列):

                pd.value_counts(obj.values,sort=False)

                计算所有值的计数,结果按照降序

isin用于判断矢量化集合的成员资格:        new_data = obj.isin(['值1','值2'...])        结果为bool数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值