pandas

介绍

pandas和numpy一样,都是对数据进行处理的模块,但是pandas封装了更多的函数,而且pandas是在numpy之上的一个工具,在pandas中间有很多的方法其实底层是基于numpy的

read_csv

02 - pandas
在pandas中间,可以使用read_csv方法直接讲一个csv文件进行读取,这里可以看到,对于使用pandas读取之后的数据类型是DataFrame,其实这也就是pandas的一个核心的数据存储方式(在后面的学习中,我们可以将DataFrame当作是一个矩阵的结构)
这里需要注意,在pandas中间对于字符的存储和其他的数据存储的名称不一样(一般叫str),这里叫做object

head

02 - pandas
这里使用head,可以看到,直接将刚刚我们csv中间的内容显示出来了,而且格式都是相同的,这里使用head的时候默认情况下是显示前5行的数据;如果想要显示前三行的内容,可以在括号中间加上需要显示的行数的数字
02 - pandas

tail

前面使用head能够显示前几行的数据,如果想要显示末几行就可以使用tail这个方法了
02 - pandas
可以看到,这样同样显示的是5行的数据,如果想要显示指定行数的数据,在括号中间写上对应的数字即可

columns与tolist()

对于一个csv文件,第一行的内容会表示以下的内容的一个属性,或者说是指标,这里我们可以通过columns将这个指标获取出来
02 - pandas
上面的结果可以看到是一个类似list的,但却并不是一个list;如果想要将结果转为list,可以直接在后面加上一个tolist()进行转化
02 - pandas

shape

在前面的numpy中间,使用到了shape,在pandas中间也是同样存在的
02 - pandas
如上,将food_info进行一个shape操作,得到的结果的含义就是存在8618样本,每一个样本存在36个指标(属性)

loc

02 - pandas
在pandas中间想要获取数据并不能直接进行获取,这里需要调用到loc这个方法,如上,如果想要获取到第一行中间的数据,可以使用food_info[0]即可
这里使用loc同样也是能够对数据进行切分的,如果想要取出第4行到第6行的数据,可以采用如下的方式
02 - pandas
如果想要获取这个数据中间指定的几行的数据,则可以使用下面这个方法
02 - pandas
可以看到,就能够单独的获取到第3、6、11行中间的内容
除了使用上面的loc来获取某一行或者多行的数据外,如果想要获取某一列的数据,可以直接使用这列对应的指标进行获取即可
02 - pandas
如上,直接在后面的中括行中间写上列名(指标)即可
使用上面的方式能够将数据中间的某一列的数据进行获取,如果想要获取多列数据呢?这时候可以使用如下的方式进行
02 - pandas
将需要获取的列的列名(指标)放入到一个list中间,之后传到DataFrame中间,这样就能够获取到对应列里面的数据了

endswith

使用endswith匹配以某一个字符串结尾的内容
02 - pandas
在上面的实例中,可以看到,首先将food_info中间的指标使用tolist的方法写入到一个list中间,之后遍历这个list并使用endswith获取以’(g)'结尾的字符串

对一列数据进行计算

02 - pandas
在上面的事例中,能够看到,想要实现的是将Calcium_(mg)这列中间的数据都处以1000(将mg转为g),仅仅只需要获取这一列的数据,直接除即可

上面将一列数据同时除了1000,如果想将两列数据直接进行相乘的话,使用如下的方式
02 - pandas
在上面将’Water_(g)'和’Lipid_Tot_(g)'这两列的数据直接进行相乘的操作时候,其实就是这两列中间的每一行的数据进行相乘的操作

合并列

上面我们实现了对一个列进行除法的操作,即将mg转为g,此时如果想将转换完成的g这一列的数据进行合并,就可以使用如下的方式
02 - pandas
如上,将新生成的一列就加入到已有的DataFrame中间了

max

02 - pandas
使用max方法,能够获取到某一列中间最大的值

sort_values

02 - pandas
使用上面的sort_values对Energ_Kcal这一列进行排序,默认情况是进行从小到大排序,这里的inplace=True,表示的就是将原文件同时进行了处理;如果想要按照从大到小的顺序进行排序,则可以在括号中间加上 ascending=False
02 - pandas
如上,这样的情况下,数据就是从大到小的顺序进行排序了;如果在排序中间会看到NaN的值,表示的就是缺失值

isnull

上面说到了NaN,这个表示的是缺失值;向这样的数据是存在有问题的,并不能用于数据分析,这样的情况下我们需要将这些内容剔除在外
02 - pandas
在上面的内容中间,可以看到,在第五个数据显示的是True,表示的就是这个数据是缺失值
02 - pandas
如果想要将中间的缺失值进行一个打印,可以直接将前面pd.isnull(age)作为一个索引,为True的就会将其对应的内容进行打印,否则不打印,如果想要通过缺失值的个数是多少,可以直接使用len
02 - pandas
可以看到,在Age这一列中间,存在有缺失值的有177个

因为这里存在很多的缺失值,这些缺失值也是需要进行处理的,不能够直接用来进行处理,可以使用如下的方式进行清理
02 - pandas
如上,获取到的good_age就是Age这一列中正常的年龄值

sum

使用sum进行求和的计算,例如,想要计算Age这一列中间所有年龄的和,就可以使用:sum(titianic_survival[‘Age’])
02 - pandas
既然这里已经获取到所有人的值,此时就能够计算出一个平均值了
02 - pandas
如上,这里获取到的就是一个平均年龄

mean

在上面计算平均值的时候,首先将缺失值进行了排除。之后进行了一个除法的操作,其实这样的操作直接使用mean方法就能够实现
02 - pandas
基于上面的mean,来实现一个不同船舱对应的平均价格
02 - pandas
通过上面的方式,可以看到不同船舱的票的价格

pivot_table

可以看到,为了实现上面计算不通船舱的价格的时候,写入的代码量较大;其实存在更为简单的方式进行处理
02 - pandas
在上面的方式中,index指定船舱的列名,values指定了生存率,表示的意思就是将Pclass和Survived进行联合处理,处理的方法使用aggfunc进行指定,用到的是numpy.mean(如果不指定aggfunc的时候,默认就是求均值)
对于上面使用pivot_table的方式,我们仅仅只用了两个对象进行了处理,当然也是能够进行多项处理的
02 - pandas
如上,values中间加入的是一个list,并且最后的aggfunc为numpy.sum

dropna

前面使用isnull的方式将某一列中存在缺失值的内容进行了打印,其实可以使用更为简单的方式进行处理(dropna)
02 - pandas
如上,使用subnet去指定需要进行处理的列,axis=0表示行,可以看到新的DataFrame中行已经变成了714了

查找DataFrame中间具体某一个数

02 - pandas
如上,我们仅仅需要知道行号,列可以直接使用列名即可

reset_index

前面讲到了sort_values对数据进行排序,但是排序完成之后,会发现index(索引)的那一列的数据还是按照原来的索引号进行展示的,如果想要index的内容也重新更新下,就需要使用到这里的reset_index的方法
02 - pandas
如上,可以看到,我们将Age这一列中间的数据从大到小进行排序,发现最左边的index值仍旧还是按照原来的序号进行展示的
02 - pandas
在上图中,使用reset_index的方法,可以看到,每一行坐前面的index值也进行了重新排序

apply 自定义函数

02 - pandas
在上面的例子可以看到,定义了一个hundredth_now的函数,后面需要使用到这个函数的时候,直接使用apply即可,使用这样的方式可以自动将apply前面的数据传给括号中指定的这个函数中间
同样使用上面的方式,也能够获取到一张表中间出现数据缺失的数量
02 - pandas

series结构

其实对于一个DataFrame,可以看作是由不同的行和不同的列组成的;其实这些行和这些列就是series
02 - pandas
通过上面可以看出,在DataFrame中间取出一列的数据,获取该数据的数据类型,可以看到是series的类型;如果此时想要获取这一列中间的数据,可以使用values
02 - pandas
如上,对这一列数据进行values操作,能够获取到这一列中的所有的值
02 - pandas
前面说到,在DataFrame中是采用的series进行数据存储的,同样这里可以得出在series中间采用的是ndarray的方式进行数据存储的

相关文章:

  • 2021-12-04
  • 2021-05-29
  • 2021-12-08
  • 2021-04-20
猜你喜欢
  • 2021-10-18
  • 2022-12-23
  • 2021-06-17
  • 2021-06-05
  • 2022-12-23
  • 2022-02-09
  • 2021-12-16
相关资源
相似解决方案