pandas练习
1.练习
import pandas as pd
import numpy as np
# 1.1.创建一个系列:
# (1)通过传入一个列表list,创建一个系列;
ps=pd.Series([3,5,7,9],index=['a','b','c','d'])
print(ps)
# (2)使用数组 创建系列;
data=np.array(np.linspace(3,10,4,dtype=int))
ps1=pd.Series(data,index=['a','b','c','d'])
print(ps1)
# (3)使用字典dict来创建一个系列。
data1={
'a':3,
'b':5,
'c':7,
'd':9
}
ps2=pd.Series(data1)
print(ps2)
# (4).通过传入constant常量,创建一个系列
ps3=pd.Series(5,index=['a','b','c','d'])
print(ps3)
# 2.已知一个序列s5,通过位置(行序号)获取3这个数据
# (1)通过位置 同时获取3和7两个数据
print(ps.loc[['a', 'c']])
# (2)获取后3个数据
print(ps.tail(3))
# (3)获取除5之外的所有数据
index1=[i for i in ps.index if i!='b']
print(ps[index1])
2.练习
import pandas as pd
import numpy as np
# 3.创建一个数据帧对象:
# (1)通过传入一个二维列表,创建一个数据帧对象
ar=np.array([['maxsu',25,'m',4.45],['katie',34,'f',2.78],['vina',31,'f',3.9],['lia',np.NaN,'m',4.6]])
df1=pd.DataFrame(ar,index=['a','b','c','d'],columns=['name','age','sex','level'])
print(df1)
# (2)使用系列Series创建一个数据帧对象
pps1=pd.Series(['maxsu',25,'m',4.45],index=['name','age','sex','level'])
pps2=pd.Series(['katie',34,'f',2.78],index=['name','age','sex','level'])
pps3=pd.Series(['vina',31,'f',3.9],index=['name','age','sex','level'])
pps4=pd.Series(['lia',np.NaN,'m',4.6],index=['name','age','sex','level'])
ps=pd.DataFrame([pps1,pps2,pps3,pps4],index=['a','b','c','d'])
print(ps)
# (3)使用字典dict创建一个数据帧对象
dict={
'name':['maxsu','katie','vina','lia'],
'age':[25,34,31,np.NaN],
'sex':['m','f','f','m'],
'level':[4.45,2.78,3.9,4.6]
}
df2=pd.DataFrame(dict,index=['a','b','c','d'])
print(df2)
# 4.给上一个数据帧上进行操作:
# (1)查看name这一列
print(df2['name'])
# (2)查看name,age两列
print(df2[['name','age']])
# (3)添加一列 score,其中数值都是100
df2['score']=[100,100,100,100]
# print(df2)
# (4)添加一列 AAA等于score这一列数据除以level列数据
df2['AAA']=df2['score']/df2['level']
# print(df2)
# 删除sex这一列
df2.drop(labels=['sex'],axis=1,inplace=True)
# print(df2)
# 5.在第4题数据帧上进行操作:
# (1)查看Katie这一行
# print(df1.loc['b'])
# (2)添加一行数据:Amy 20 f 4.1
data2={
'name':'amy',
'age':20,
'sex':'f',
'level':4.1
}
dff=pd.DataFrame(data2,index=['e'])
df3=df1.append(dff)
print(df3)
# (3)删除Vina这一行
print(df3.drop(labels=['c'],axis=0,inplace=False))
3.练习
import pandas as pd
import numpy as np
# 2.创建数据帧如下
data={
'Name':['Alva','Ben','Cary','Nancy'],
'Stage':['p1','p2','p2','p1'],
'Theory':[82,50,95,65],
'Skill':[76,35,91,72]
}
ppp=pd.DataFrame(data,index=['a','b','c','d'])
print(ppp)
# 2.查看Name和Stage两列数据
print(ppp[['Name', 'Stage']])
# 3.查询Stage 为P1 且Theory 超过70分的信息
print(ppp[(ppp['Stage'] == 'p1') & (ppp['Theory'] >= 70)])
# 4.统计Skill列数据的最高分和最低分
print('最高分:',ppp['Skill'].max())
print('最低分:',ppp['Skill'].min())
# 5.根据Stage分组,并求各分组Theory的平均值
print(ppp.groupby('Stage').agg(np.mean)['Theory'])
# 6.删除Stage列
del ppp['Stage']
# 7.添加一列,列名为Sum,其数据等于Theory列 + Skill列
ppp['sum']=ppp['Theory']+ppp['Skill']
print(ppp)
# 8.对Sum列进行排序(按照降序排序)
ppa=ppp.sort_values('sum',ascending=False)
print(ppa)
# 9.根据Sum列数据,通过自定义函数的方式,添加一列Level。要求:
# 将150—200分定义为A,100—150定义为B,0-100定义为C
def fa(x):
if 150<x<200:
return 'A'
elif 100<x<150:
return 'B'
else:
return 'C'
ppp['level']=ppp['sum'].map(fa)
print(ppp)
4.练习
import pandas as pd
import numpy as np
# 1.加载房天下( ftx.xls )数据集,提取时间为2009年的数据,使用分组函数,计算上海和沈阳的地区的销售平均值
ftx=pd.read_excel(r'ftx.xls')
ff=ftx[(ftx['销售区域'] == '上海') | (ftx['销售区域'] == '沈阳')]
print(ff[ff['年'] == 2009].groupby('销售区域').agg(np.mean)['销售数量'])
# 2.提取时间为2009年的数据,使用分组函数,计算上海和沈阳的地区的销售最大值
print(ff[ff['年'] == 2009].groupby('销售区域').agg(np.max)['销售数量'])
# 3.计算沈阳地区2009年每季度的销售总和
def fn(x):
if 1<=x<=3:
return 1
elif 4<=x<=6:
return 2
elif 7<=x<=9:
return 3
else:
return 4
ftx['季度']=ftx['月'].map(fn)
fa=ftx[(ftx['年'] == 2009) & (ftx['销售区域'] == '沈阳')]
print(fa.groupby('季度').agg(np.sum)['销售数量'])
# 4.计算沈阳地区2009年每季度的销售均值
print(fa.groupby('季度').agg(np.mean)['销售数量'])
数据:ftx.xls