内容正文:
编程处理数据
1
pandas模块
处理数据
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
pandas模块
处理数据
matplotlib
模块绘图
Python
分析数据
编程处理数据的基本过程
2
1 Series:一维的数组结构
2 DataFrame:二维的数据结构
import pandas as pd
#导入模块,别名为“pd”
pd.xxxx
如:
pd.DateFrame
import pandas
pandas.xxxx
如:
pandas.Series
一、 利用pandas模块处理数据
3
Series
Series:一维的数据结构,包含一个数组的数据(Values)和一个与数据关联的索引(index),索引值默认从0起递增。
例:通过列表创建Series对象s1: pd.Series(列表)
import pandas as pd
s1=pd.Series([166,178,180])
print(s1)
4
Series
5
import pandas as pd
data = {"i1":1,"i2":2,"i3":3,"i4":4}
s3=pd. Series(data)
print(s3)
i1 1
i2 2
i3 3
i4 4
左列:index
右列:values
Series
通过字典创建
6
思考与实践
龙龙记录了家庭一段时间的流水,请你创建一个Series数据结构,输出如图1所示的家庭某天的消费情况。
import pandas as pd
xf=[12,68.5,105]
s=pd.Series( )
print(s)
早餐 12
水果 68.5
买菜 105
xf,index=[‘早餐’,’水果’,’买菜’]
图1
7
Series的访问与修改
通过索引选取Series对象中的值。
import pandas as pd
s1 = pd.Series([166,178,180],index=["s01","s02","s03"])
print(s1)
s01 166
s02 178
s03 180
dtype: int64
s01 168
s02 178
s03 180
dtype: int64
print(s1[0],s1['s01'])
通过赋值语句可以修改Series对象中的值。
s1['s01']=168
print(s1)
166 166
访问格式:对象名[索引]
s1[2]=206 或
s1['s03']=206
8
Series属性
查看Series对象的index、values属性值:对象名.属性
print(s1.values)
运行结果:[166 178 180]
print(s1.index)
运行结果:
index(['s01', 's02', 's03'], dtype='object')
import pandas as pd
s1=pd.Series([166,178,180],index=["s01","s02","s03"])
9
初识DataFrame
由1个索引列(index)和若干个数据列组成二维数据结构。
考号 身高 立定跳远
0 430445 182 232
1 430435 163 168
2 430524 175 220
3 430326 172 243
4 430318 164 202
5 430416 159 196
6 430522 170 235
index
列标题:columns
values
10
DataFrame的创建
由1个索引列(index)和若干个数据列组成的二维数据结构。
columns
values
pd.DataFrame(字典,columns=标题)
11
读取二维数据文件创建对象。
DataFrame
import pandas as pd
df=pd.read_excel ("test.xlsx")
地区 规格 单位 价格 采价点
0 北京市 红富士一级 元/500克 2.98 超市2
1 北京市 红富士一级 元/500克 4.88 超市1
2 天津市 红富士一级 元/500克 5.00 超市1
3 天津市 红富士一级 元/500克 5.00 超市2
行索引:index
二维数据:values
列标题:columns
12
DataFrame属性
print(df.index)
运行结果为:
RangeIndex(start=0, stop=3, step=1)
查看DataFrame对象属性值:对象名.属性
地区 规格 单位 价格 采价点
0 北京市 红富士一级 元/500克 2.98 超市2
1 北京市 红富士一级 元/500克 4.88 超市1
2 天津市 红富士一级 元/500克 5.00 超市1
3 天津市 红富士一级 元/500克 5.00 超市2
13
DataFrame属性
print( df1.columns)
运行结果:
index(['地区', '规格', '单位',‘价格’,‘采价点’],dtype='object')
查看DataFrame对象属性值:对象名.属性
地区 规格 单位 价格 采价点
0 北京市 红富士一级 元/500克 2.98 超市2
1 北京市 红富士一级 元/500克 4.88 超市1
2 天津市 红富士一级 元/500克 5.00 超市1
3 天津市 红富士一级 元/500克 5.00 超市2
14
DataFrame属性
print(df.values)
运行结果为:
[['北京市','红富士一级','元/500克','2.98','超市2' ]
['北京市','红富士一级','元/500克','4.88','超市1' ]
['天津市','红富士一级','元/500克','5.00','超市1' ]
['天津市','红富士一级','元/500克','5.00','超市2' ]]
查看DataFrame对象属性值:对象名.属性
15
DataFrame列的访问
DataFrame对象中的列可以通过属性法或字典法来访问。
格式 属性法:对象名.列标题
字典法:对象名[‘列标题’]
例:df对象中选择姓名列
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df.姓名
运行结果为:
0 王静怡
1 张佳妮
2 李臣武
Name: 姓名, dtype: object
访问'姓名'列数据 字典法:df['姓名']
16
DataFrame列的访问
DataFrame对象中的列可以通过属性法或字典法来访问。
格式 属性法:对象名.列标题
字典法:对象名[‘列标题’]
例:df中对象选择借阅次数列
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df[‘借阅次数’]
运行结果为:
0 28
1 56
2 37
Name: 借阅次数, dtype: int64
访问'借阅次数'列数据 属性法:df.借阅次数
17
DataFrame行的访问
DataFrame对象中的行可以通过切片法来访问
格式:对象名[开始索引:结束索引+1]
例:df对象中选择第一行
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df[0:1]
运行结果为:
姓名 性别 借阅次数
0 王静怡 女 28
18
DataFrame行的访问
DataFrame对象中的行可以通过切片法来访问
格式:对象名[开始索引:结束索引+1]
例:df对象中选择索引号为0、1的两行数据
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df[0:2]
运行结果为:
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
19
DataFrame行的访问
DataFrame可以通过布尔型数据选取满足条件的行。
格式:对象名[布尔型条件表达式]
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df[df.借阅次数>30]
运行结果为:
姓名 性别 借阅次数
1 张佳妮 女 56
2 李臣武 男 37
例:df对象中选择借阅次数大于30的行
df[df[‘借阅次数’]>30]运行结果为:
姓名 性别 借阅次数
1 张佳妮 女 56
2 李臣武 男 37
20
DataFrame行的访问
DataFrame可以通过布尔型数据选取满足条件的行。
格式:对象名[布尔型条件表达式]
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df[df.姓名=='女']
运行结果为:
姓名 性别 借阅次数
1 张佳妮 女 56
2 李臣武 男 37
例:df对象中选择性别为'女'的行
df[df[‘性别’]=='女']
运行结果为:
姓名 性别 借阅次数
1 张佳妮 女 56
2 李臣武 男 37
21
DataFrame单个值的检索与修改
DataFrame对象中单个值可以通过at[]方法来访问
格式:对象名.at[行索引,‘列标题’]
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df.at[0,'姓名']
运行结果为:
王静怡
例:df对象中访问第1行、‘姓名’列的值
22
DataFrame单个值的检索与修改
DataFrame对象中单个值可以通过at[]方法来修改
格式:对象名.at[行索引,‘列标题’]
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df.at[0,'姓名']=”李云”
运行结果为:
姓名 性别 借阅次数
0 李云 女 28
1 张佳妮 女 56
2 李臣武 男 37
例:df对象中访修改第1行、‘姓名’列的值
23
DataFrame单个值的检索与修改
DataFrame对象中单个值可以通过at[]方法来修改
格式:对象名.at[行索引,‘列标题’]
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df.at[2,'借阅次数']=49
运行结果为:
姓名 性别 借阅次数
0 李云 女 28
1 张佳妮 女 56
2 李臣武 男 49
例:df对象中访修改李臣武的借阅次数改为49
24
DataFrame常用函数应用
例:df对象中求和借阅次数列的和:sum()
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df.借阅次数.sum()
DataFrame的函数可以进行行、列编辑和统计计算
格式: 对象名.函数()
运行结果:121
25
DataFrame常用函数应用
例:df对象中统计出姓名列非空项的个数:count()
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
DataFrame的函数可以进行行、列编辑和统计计算
格式: 对象名.函数()
df['姓名'].count()
运行结果:3
26
DataFrame常用函数应用
例:df对象中统计借阅次数的平均值mean()
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
DataFrame的函数可以进行行、列编辑和统计计算
格式: 对象名.函数()
df['借阅次数'].mean()
运行结果:3
27
DataFrame常用函数应用
append():在 指定元素的结尾插入内容
例:df对象如下所示:
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
df1=df.append({"姓名":"王安石","性别":"男","借阅次数":49},ignore_index=True)
运行结果为:
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
3 王安石 男 49
28
DataFrame常用函数应用
sort_values():排序,axis=0/1确定行列
例:df1对象中执行
df1=df1.sort_values("借阅次数",ascending=False)
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
3 王安石 男 49
姓名 性别 借阅次数
1 张佳妮 女 56
3 王安石 男 49
2 李臣武 男 37
0 王静怡 女 28
29
DataFrame常用函数应用
sort_values():排序,axis=0/1确定行列
例:df1对象中执行
df1=df1.sort_values("借阅次数",ascending=True)
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
3 王安石 男 49
姓名 性别 借阅次数
0 王静怡 女 28
2 李臣武 男 37
3 王安石 男 49
1 张佳妮 女 56
30
应用与实践
请同学们收集自己全班同学本年的图书借阅情况,汇总成电子文档,并用前面所学的知识,统计每位同学借阅总册数,借阅册数最多的前5名同学评选为“看书达人”。
31
1.Series:
(1)Series对象的创建
(2)Series对象的访问和修改
2.DataFrame
(1)DataFrame对象的创建
(2)DataFrame对象的访问和修改
(3)DataFrame部分常用函数
课堂小结
32
$$