Python常用模块的基本操作及语法实例清单总结之五:Pandas库

光看书太枯燥,直接写案例又常常为一个语法不对而困扰,为此对python常用库的语法直接在pyCharm中进行了录入,以便做项目时查询使用。本篇介绍的是pandas库

-- coding:utf-8 --

import pandas as pd #导入pandas库

#pandas数据类型之Series
s1 = pd.Series([1,2,3,4]) #创建整数类型的Series对象
s2 = pd.Series([4.,12.4]) #创建整数和浮点混合类型的Series对象
s3 = pd.Series([False,True]) #创建布尔类型的Series对象
s4 = pd.Series([44,23.1,True,‘Hello,World!’]) #创建混合类型的Series对象
ss = pd.Series([‘Bill Gates’,‘微软创始人’],index=[‘Person’,‘Who’]) #改变第一列的索引,默认是数字

#pandas数据类型之DataFrame
scientists = pd.DataFrame({‘Name’:[‘Rosalin Franklin’,‘William Gosset’],
‘Occupation’:[‘Chemist’,‘Statistician’],
‘Born’:[‘1920-07-25’,‘1937-10-16’],
‘Age’:[37,61]}) #创建一个DataFrame对象
scientists1 = pd.DataFrame({‘Name’:[‘Rosalin Franklin’,‘William Gosset’],
‘Occupation’:[‘Chemist’,‘Statistician’],
‘Born’:[‘1920-07-25’,‘1937-10-16’],
‘Age’:[37,61]},columns=[‘Occupation’,‘Born’,‘Age’],
index=[‘Rosalin Franklin’,‘William Gosset’]) #创建DataFrame对象,指明列名,改变索引
#Series的基本操作
first_row = scientists.loc[‘Rosalin Franklin’] #获取行索引为"Rosalin Franklin"的整行数据
print(type(first_row)) #first_row行的数据类型,为一个Series对象
print(first_row.index) #获取first_row行的列名
print(first_row.keys) #同上
print(first_row.index[0]) #获取第一个值
print(first_row) #获取所有值,打印时带列名
print(first_row.values) #获取所有值

#Series的方法
ages = scientists1[‘Age’] #获取数据集中的所有数据,返回一个Series对象
print(‘mean:’,ages.mean()) #计算Age列的平均值
print(‘min:’,ages.min()) #计算Age列的最小值
print(‘max:’,ages.max()) #计算Age列的最大值
print(‘std:’,ages.std()) #计算Age列的标准差
print(ages.sort_values(ascending=False)) #对Age列降序排列
print(ages.append(ages)) #将ages追加到自身上

#Series的条件过滤
print(ages[ages>ages.mean()].head(3)) #筛选出Age大于平均值的数据
print((ages>ages.mean()).head(3)) #ages每个值与mean()比较,大于的显示True,小于False
print(ages[[True,True,False,True,False,False]]) #直接指定每一行记录是否显示,True的显示,False的不显示。

#DataFrame的条件过滤
print(scientists1[scientists1[‘Age’]>scientists1[‘Age’].mean()]) #输出数据集中所有Age大于平均值的记录
print(scientists1.loc([True,True,False,True])) #只显示行索引为0,1,3的记录
print(scientists1.iloc([1,3,4])) #只显示记录索引为1,3,4的记录
#获取Age值大于平均值的记录,只显示Name、Age、Occupation三列
print(scientists1[[‘Name’,‘Age’,‘Occupation’]],[scientists1[‘Age’]>scientists1[‘Age’].mean()].head(2))
print(scientists1[[‘Name’,‘Age’,‘Occupation’]],[scientists1[‘Age’]>scientists1[‘Age’].mean()].loc[[True,True]])
print(scientists1[[‘Name’,‘Age’,‘Occupation’]],[scientists1[‘Age’]>scientists1[‘Age’].mean()].iloc[[0,2]])

##########################################################################################################
#pandas操作Excel表格
df = pandas.read_excel(‘D:/疫情/11.27/数据对比.xls’) #读取excel文件
print(type(df)) #输出df的数据类型
print(df.head()) #输出df的前5行数据
print(df.head(10)) #输出df的前10行数据
print(df.shape) #输出df的维度(行数和列数)
print(df.columns) #获取df的列
for column in df.columns:
print(column,end=’ ') #对数据集的列进行迭代

#查看数据集中的列
total_df = df[‘学院名称’] #获取"学院名称"列的数据,返回series对象
print(total_df.head(2)) #获取total_df前两行的数据,如果不指定参数,会获取最后5行的数据
print(total_df.tail(2)) #获取total_df最后两行的数据,如果不指定参数,会获取最后5行的数据
subset = df([‘学院名称’,‘今日教职工总数’]) #获取"学院名称“、”今日教职工总数“列的数据,返回DataFrame对象
print(subset.head(2)) #获得子数据集的前两行数据

#查看数据集的行
print(df.loc(4)) #输出第5行的数据
print(df.loc[[2,4,5]]) #输出第3、5、6行的数据
print(df.iloc[-1]) #输出最后一行的数据

#查看数据集单元格中的数据
subset= df.loc[:,[‘学院名称’,‘今日教职工总数’]] #获取"学院名称"和“今日教职工总数”列的所有数据
print (subset.head(2))
print(’---------’)
subset=df.iloc[:,[2,4,-1]] #获取列索引为2,4,-1(最后一列)的列的所有数据
print(subset.head(2))
print(’---------’)
subset = df.iloc[:,3:6] #获取列索引为3、4、5的列的所有数据
print (subset.head(2))
print(’------’)
subset=df.iloc[0:3,3:6] #获取行索引为0,1,2,列索引为3,4,5的数据
print(subset)
print(’---------’)
subset=df.loc[1,‘学院名称’] #获取行索引为1,列名为“学院名称”的单元格的数据
print(subset)

#对数据集进行分组
df.groupby(‘学院名称’)[‘今日教职工总数’].mean #对“学院名称”列分组,然后在组内对“今日教职工总数”列计算平均值
df.groupby(‘学院名称’)[‘类别’].nunique #对”学院名称“列分组,并统计每一分组含有多少个”类别“

#可视化统计数据
import matplotlib.pyplot as plt
df=pd.read_csv(‘gapminder.tsv’,sep=’\t’)
global_yearly_life_expectancy = df.groupby(‘year’)[‘lifeExp’].mean() #统计每年的预期寿命
multi_group_var = df.groupby(‘year’)[‘gdpPercap’].mean[] #统计每年的人均GDP
fig,(ax1,ax2)=plt.subplots(1,2,figsize = (8,4)) #打开绘图界面,初始化
ax1.plot(global_yearly_life_expectancy) #绘制人均预期寿命曲线
ax2.plot(multi_group_var) #绘制人均GDP变化曲线
plt.show()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值