天天看点

python数据分析-pandas模块基础知识(2)

呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!

博客地址:qxi的博客

还是可以先了解下基础篇(1)哟:pandas模块基础知识(1)

上一篇总结的是pandas模块中的Series对象,还是比较简单内容也不多,现在就开始介绍比较重要的数据结构:

DataFrame

#这一篇主要总结的是DataFrame与Series的区别,DataFrame如何生成,以及一些最最基本的操作,最后还有DataFrame的排序问题。#

1、注意Series只有

一列序列值

,左边是索引,而DataFrame是二维的,可以有很多列序列值,每一列可以是不同的值类型(数值,字符串,布尔值等),DataFrame即有行索引又有列索引。看下面这个例子应该会好理解些:

import pandas as pd
s=pd.Series([[32,6,17,3],[12,3,5,-7]])
df=pd.DataFrame([[32,6,17,3],[12,3,5,-7]])
print(s) 
print(df)
           

运行结果:

0    [32, 6, 17, 3]
1    [12, 3, 5, -7]  #Series只有一列序列值,左边是索引
    0  1   2  3
0  32  6  17  3
1  12  3   5 -7  #DataFrame可以有多列,有行索引列索引
           

2、如何生成DataFrame?通常可以利用

numpy数组

或者

字典

来生成DataFrame。

例子中

np.arange(12).reshape(3,4)

就是numpy数组,

data

是字典,

利用index指定行索引,利用columns指定列索引。

import pandas as pd
import numpy as np
df1=pd.DataFrame(np.arange(12).reshape(3,4)) #默认索引
print(df1)
df2=pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['d','e','f','g']) #指定索引
print(df2)
data={'sex':['男','女','男','女','女'],'name':['李明','晓青','小亮','少梅','欣欣'],'score':[83,76,89,90,95]}  #字典
df3=pd.DataFrame(data)
print(df3)
           

运行结果:

0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11  #默认索引从0开始
   d  e   f   g
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11 #指定索引结果
  sex   name   score
0   男   李明     83
1   女   晓青     76
2   男   小亮     89
3   女   少梅     90
4   女   欣欣     95  #利用字典生成
           

3、对DataFrame的基本操作,显示每一列的数据类型、显示出值,显示行索引以及列索引。

import pandas as pd
data={'sex':['男','女','男','女','女'],'name':['李明','晓青','小亮','少梅','欣欣'],'score':[83,76,89,90,95]}  #字典
df=pd.DataFrame(data)
print(df)
print(df.dtypes) #每一列的数据类型
print(df.values) #显示出值
print(df.index)  #显示行索引
print(df.columns) #显示列索引
           

运行结果:

sex    name  score
0   男   李明     83
1   女   晓青     76
2   男   小亮     89
3   女   少梅     90
4   女   欣欣     95
sex      object
name     object
score     int64
dtype: object
[['男' '李明' 83]
 ['女' '晓青' 76]
 ['男' '小亮' 89]
 ['女' '少梅' 90]
 ['女' '欣欣' 95]]
RangeIndex(start=0, stop=5, step=1) #行索引值
Index(['sex', 'name', 'score'], dtype='object')  #列索引值
           

4、DataFrame的描述统计以及

转置

import pandas as pd
data={'sex':['男','女','男','女','女'],'name':['李明','晓青','小亮','少梅','欣欣'],'chinese':[83,76,89,90,95],'matn':[88,90,87,78,95],'English':[77,98,90,87,85]}  #字典
df=pd.DataFrame(data)
print(df)
print(df.describe()) #描述统计量
print(df.T)  #转置
           

运行结果:

sex name  chinese  matn  English
0   男   李明       83    88       77
1   女   晓青       76    90       98
2   男   小亮       89    87       90
3   女   少梅       90    78       87
4   女   欣欣       95    95       85  #原表
         chinese       matn    English
count   5.000000   5.000000   5.000000
mean   86.600000  87.600000  87.400000
std     7.300685   6.188699   7.635444
min    76.000000  78.000000  77.000000
25%    83.000000  87.000000  85.000000
50%    89.000000  88.000000  87.000000
75%    90.000000  90.000000  90.000000
max    95.000000  95.000000  98.000000  #描述统计一些量,由于前面列不是数值型,就没有这些量
          0   1   2   3   4
sex       男   女   男   女   女
name     李明  晓青  小亮  少梅  欣欣
chinese   83  76  89  90  95
matn     88  90  87  78  95
English    77  98  90  87  85   #转置结果
           

5、DataFrame的

排序问题

①sort_index(axis,ascending)函数是指按

索引

对数据进行排序,当axis=0表示逐行操作,针对

行索引

排序,1表示逐列操作,针对

列索引

排序;ascending=True是默认对索引升序排序,ascending=False是对索引降序排序。

②sort_values(by,ascending)是指按

某一列数值

进行排序,by引出哪一列,同样ascending=False是降序排序。

import pandas as pd
data={'sex':['男','女','男','女','女'],'name':['李明','晓青','小亮','少梅','欣欣'],'chinese':[83,76,89,90,95],'matn':[88,90,87,78,95],'English':[77,98,90,87,85]}  #字典
df=pd.DataFrame(data)
df.columns=['A','B','C','D','E'] #对索引列修改
print(df)
print(df.sort_index(axis=0,ascending=False))  #逐行操作,对行索引降序
print(df.sort_index(axis=1,ascending=False))  #逐列操作,对列索引降序
print(df.sort_values(by='C',ascending=False))   #对C列数值降序排序
           

运行结果:

A   B   C   D   E
0  男  李明  83  88  77
1  女  晓青  76  90  98
2  男  小亮  89  87  90
3  女  少梅  90  78  87
4  女  欣欣  95  95  85  #修改之后的
   A   B   C   D   E
4  女  欣欣  95  95  85
3  女  少梅  90  78  87
2  男  小亮  89  87  90
1  女  晓青  76  90  98
0  男  李明  83  88  77 #行索引降序排序,变成4,3,2,1,0
    E   D   C   B  A
0  77  88  83  李明  男
1  98  90  76  晓青  女
2  90  87  89  小亮  男
3  87  78  90  少梅  女
4  85  95  95  欣欣  女  #列索引降序排序,变成E,D,C,B,A
   A   B   C   D   E
4  女  欣欣  95  95  85
3  女  少梅  90  78  87
2  男  小亮  89  87  90
0  男  李明  83  88  77
1  女  晓青  76  90  98  #对C列数值降序排序
           

好啦,今天的总结就到这里啦。我觉得如果你是刚入门python数据分析的话,其实一开始对自己要求不能太高,得循序渐进,慢慢来,基础易懂的东西才适合刚入门,这样才不会容易被打击,反而觉得挺有趣,因为你能看懂,啃得动哈哈,希望我的文章对你有帮助,关注我哈,我会持续更新的~