组队学习介绍
最近事情太多(以及人太懒),好久没有空更新博客,遂报名公众号Datawhale的Pandas学习小组来督促自己学习。学习小组的目的主要是细致地学习Python中的第三方模块Pandas,该模块用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用。
学习小组的时间安排大致如下:
-
Task01:Pandas基础(1天)
-
Task02:索引(3天)
-
Task03:分组(2天)
-
Task04:变形(2天)
-
Task05:合并(2天)
-
Task06:综合练习(1天)
学习小组的参考资料是Datawhale-GYH助教撰写的1。
本博文的笔记概览如下所示:
![](https://img-blog.csdnimg.cn/20200422103019626.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bnNpbWlhb2Zyb21zaA==,size_16,color_FFFFFF,t_70#pic_center)
综合题
导入数据:
import numpy as np
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
一、2002 年-2018 年上海机动车拍照拍卖
path = '/Users/sunsimiao/Documents/2020自学/202004组队学Pandas/joyful-pandas-master/数据集/'
df1 = pd.read_csv(path+'2002年-2018年上海机动车拍照拍卖.csv')
df1.head()
(1) 哪一次拍卖的中标率首次小于 5%?
df1['Auction winning rate'] = df1['Total number of license issued'] / df1['Total number of applicants']
df1.head()
df1[df1['Auction winning rate']<0.05]['Date'].values[0]
'15-May'
(3) 将第一列时间列拆分成两个列,一列为年份(格式为 20××),另一列为月份(英语缩写),添加到列表作为第一第二列,并将原表第一列删除, 其他列依次向后顺延。
year = []
month = []
for f in list(df1['Date'].values):
year.append(f.split('-')[0])
month.append(f.split('-')[1])
df1['Year'] = year
df1['Year'] = df1['Year'].apply(lambda x: '200'+str(x) if len(str(x))==1 else '20'+str(x))
df1['Month'] = month
df1_year_month = df1.reindex(columns=['Year', 'Month', 'Date', 'Total number of license issued', 'lowest price ', 'avg price',
'Total number of applicants', 'Auction winning rate'])
df1_year_month = df1_year_month.drop(columns='Date')
del df1_year_month['Auction winning rate']
df1_year_month.head()
(2) 按年统计拍卖最低价的下列统计量:最大值、均值、0.75 分位数,要求显示在同一张表上。
df1_summary = df1_year_month.groupby('Year')
df1_summary_lowest_price = df1_summary.describe(percentiles=[.75])
df1_summary_lowest_price
(4) 现在将表格行索引设为多级索引,外层为年份,内层为原表格第二至第五列的变量名,列索引为月份。
L1 = ['Year']
L2 = ['Total number of license issued', 'lowest price ', 'avg price', 'Total number of applicants']
mul_index = pd.MultiIndex.from_product([L1,L2],names=('Upper', 'Lower'))
pd.pivot_table(df1_year_month,index=['Year'],
columns=['Month'])
参考资料
@GYHHAHA的githubhttps://github.com/datawhalechina/joyful-pandas ↩︎