呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址: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数据分析的话,其实一开始对自己要求不能太高,得循序渐进,慢慢来,基础易懂的东西才适合刚入门,这样才不会容易被打击,反而觉得挺有趣,因为你能看懂,啃得动哈哈,希望我的文章对你有帮助,关注我哈,我会持续更新的~