1、pandas实战
作者:互联网
房天下案例:
一、读取数据 ftx.xls
一般读取信息,读取head()函数的信息就行了
二、加载房天下数据集,提取时间为2009年的数据,使用分组函数,计算上海和沈阳的地区的销售平均值
这里是要选出2009、上海和沈阳的关键字的数据,所以要先进行筛选,可以先查看显示某种信息的数据,然后再通过赋值来保存出来,再进行统计处理
先查找2009年信息:
df_2009=df[df[‘年’]==2009],这里的是双等号,这里面要放的是检验符合的数据对象,而不是数值
再查找销售区域为上海和沈阳的信息:
df_2009_1=df_2009[df_2009[‘销售区域’].isin([‘上海’,‘沈阳’])]
上面的是属于过滤掉除了2009以外的其他年份的数据,再过滤除了上海和沈阳以外的数据,形成一个新的数据帧,来方便下面的分组只需要对其中一列进行操作。
最后按照销售区域进行分组,求销售平均值
df_2009_1.groupby(‘销售区域’).agg(np.mean)[‘销售数量’]
更方便的代码书写方式:把以上三条代码进行浓缩改进得到:
df[(df[‘年’]==2009)&(df[‘销售区域’].isin([‘上海’,‘沈阳’]))].groupby(‘销售区域’).agg(np.mean)[‘销售数量’]
这里得到的也是一个映射,类似于用了上面的第一第二条代码进行逻辑运算比较然后加上第三条代码而已
三、提取时间为2009年的数据,使用分组函数,计算上海和沈阳的地区的销售最大值
df[(df[‘年’]==2009)&(df[‘销售区域’].isin([‘上海’,‘沈阳’]))].groupby(‘销售区域’).agg(np.sum)[‘销售数量’]
四、计算沈阳地区2009年每季度的销售总和
数据中一开始并没有季度的信息,所以先要添加季度,可以使用map映射出一列新数据季度。
先把已经有的1-3月份划为第一季度等等来设置
三种修改数据的方式中,用自定义函数来判断进行修改比较好,因为涉及的判断多
def fn(x):
if x>0 and x<4:
return ‘s1’
elif x>3 and x<7:
return ‘s2’
elif x>6 and x<10:
return ‘s3’
else:
return ‘s4’
df [‘季度’]=df[‘月’]map(fn)
df.head()
这里赋值后,并创建了新列名季度,然后借用以上的代码可以得到,
df[(df[‘年’]2009)&(df[‘销售区域’]‘沈阳’)].groupby(‘季度’).agg(np.sum)[‘销售数量’]
先筛选出2009年和沈阳的,然后以季度分组,再计算各自的销量总和
五、计算沈阳地区2009年每季度的销售均值
df[(df[‘年’]2009)&(df[‘销售区域’]‘沈阳’)].groupby(‘季度’).agg(np.mean)[‘销售数量’]
以上主要考察对自身的逻辑处理方式
银行:
一、读入bank数据表 bank
二、删除列,列名为每月归还额
del df[‘每月归还额’]
三、对指定列做频数统计,列名为贷款期限
df[‘贷款期限’].value_counts()
四、对指定列做分组统计,列名为还款状态。在此基础上,计算各分组贷款金额列的均值
df.groupby(‘还款状态’).agg(np.mean)[‘贷款金额’]
五、统计贷款金额的均值、最小值、最大值、中位数、方差
df[‘贷款金额’].describe(),可以得到所有的数据类型
如果只想得到部分的,可以一个个打印
s=df【‘贷款金额’】
print(‘均值’,s.mean())
print(‘最大值’,s.max())
六、对数据进行排序,按照发放贷款日期(降序)贷款金额(升序)排序
df.sort_values([‘发放贷款日期’,‘贷款金额’],ascending=[False,True])
这里贷款金额并没有完全升序,因为是先按发放贷款日期进行优先降序,然后再在相同的发放贷款日期中以贷款金额进行升序
七、按照贷款金额除以贷款期限计算生成新列,并命名为每月归还额
df[‘每月归还额’]=df[‘贷款金额’]/df[‘贷款期限’]
八、提取行(账户号在3000到4500之间)列(发放贷款日期和贷款金额)的数据
先进行筛选出符合的df行数据: df1=df[(df[‘账户号’]>=3000)&(df[‘账户号’]<=4500)]
然后 显示出需要的列数据:df1[[‘发放贷款日期’,‘贷款金额’]]
标签:实战,df,沈阳,金额,销售,贷款,2009,pandas 来源: https://blog.csdn.net/qwe863226687/article/details/114223447