Pandas基础——综合小练习

Pandas基础上有五个部分的内容,暂时告一段落,下面的小练习题有三个大问题组成,本身作出来了一部分题,因为一些理解问题,一部分尚未运行出来,在以后的学习过程当中,会补全这部份内容。javascript

1、2002年-2008年上海机动车拍照拍卖

import numpy as np
import pandas as pd
import re
df = pd.read_csv('数据集/数据集/2002年-2018年上海机动车拍照拍卖.csv')
df.head()

在这里插入图片描述
问题:
(1) 哪一次拍卖的中标率首次小于 5%?java

df[df['Total number of license issued'] / df['Total number of applicants'] < 0.05].index[0]

在这里插入图片描述
(2) 按年统计拍卖最低价的下列统计量:最大值、均值、0.75 分位数,要求 显示在同一张表上。
(3) 将第一列时间列拆分红两个列,一列为年份(格式为 20××),另外一列为 月份(英语缩写),添加到列表做为第一第二列,并将原表第一列删除, 其余列依次向后顺延。web

df['年份'] = df['Date'].apply(lambda x : 2000+int(x.split('-')[0]))
df['月份'] = df['Date'].apply(lambda x : x.split('-')[1])
new_columns = ['年份','月份']+list(df.columns[1:-2])
df_1= df.reindex(columns=new_columns).copy()
df_1.head()

在这里插入图片描述

(4) 如今将表格行索引设为多级索引,外层为年份,内层为原表格第二至第 五列的变量名,列索引为月份。app

Month = df_1.iloc[0:12,1].to_list()
result = df_1.melt(id_vars=['年份','月份'],value_vars=['Total number of license issued','lowest price ','avg price','Total number of applicants'],value_name='info')
result.pivot_table(index = ['年份','variable'],columns='月份',values='info',fill_value='-').reindex(columns = Month)

在这里插入图片描述

(5) 通常而言某个月最低价与上月最低价的差额,会与该月均值与上月均值 的差额具备相同的正负号,哪些拍卖时间不具备这个特色?
(6) 将某一个月牌照发行量与其前两个月发行量均值的差额定义为发行增 益,最初的两个月用 0 填充,求发行增益极值出现的时间。svg

df_2= df_1.copy()
df_2['发行增益']=0
for index in df_2.index:
    if index<2:continue
    df_2.loc[index,'发行增益']= df_2.loc[index,'Total number of license issued']-(df_2.loc[index-1,'Total number of license issued']+df_2.loc[index-2,'Total number of license issued'])/2
print("最小",df_2.loc[df_2["发行增益"] == df_2["发行增益"].min()][['年份','月份']].head())
print("最大",df_2.loc[df_2["发行增益"] == df_2["发行增益"].max()][['年份','月份']].head())

在这里插入图片描述

2、2007 年-2019 年俄罗斯机场货运航班运载量

df_3 = pd.read_csv('数据集/数据集/2007年-2019年俄罗斯货运航班运载量.csv')
df_3.head()

在这里插入图片描述
问题:
(1) 求每一年货运航班总运量。函数

df_3.groupby('Year')['Whole year'].sum()

在这里插入图片描述

(2) 每一年记录的机场都是相同的吗?学习

print(df_3.groupby('Year')['Airport name'].count())

在这里插入图片描述
能够看出每一年的都是不相同的
(3) 按年计算 2010 年-2015 年整年货运量记录为 0 的机场航班比例。spa

df_4 = df_3.set_index(['Year'])
groupby_1 = df_4.sort_index().loc[2010:2015].groupby('Year')
display(groupby_1['Whole year'].agg( lambda x: print( '年份:', x.index[0], '\t 比例:%.2f' % (len(x[x==0]) / len(x) * 100), '%' ) ))

在这里插入图片描述

(4) 若某机场至少存在 5 年或以上知足全部月运量记录都为 0,则将其全部 年份的记录信息从表中删除,并返回处理后的表格3d

df_5= df_3.set_index('Airport name')
groupby_2 = df_5.groupby('Airport name')
zero_airport = pd.DataFrame(groupby_2['Whole year'].apply( lambda x: len(x[x==0])>5 ))
df_5.drop(zero_airport[zero_airport['Whole year']==True].index).head()

在这里插入图片描述

(5) 采用一种合理的方式将全部机场划分为东南西北四个分区,并给出 2017 年-2019 年货运总量最大的区域。
(6) 在统计学中经常用秩表明排名,如今规定某个机场某年某个月的秩为该 机场该月在当年全部月份中货运量的排名(例如 *** 机场 19 年 1 月运 量在整个 19 年 12 个月中排名第一,则秩为 1),那么判断某月运量情 况的相对大小的秩方法为将全部机场在该月的秩排名相加,并将这个量 定义为每个月的秩综合指数,请根据上述定义计算 2016 年 12 个月 的秩综合指数。code

3、新冠肺炎在美国的传播

df_confirm = pd.read_csv('数据集/数据集/美国确证数.csv')
df_death= pd.read_csv('数据集/数据集/美国死亡数.csv')
display(df_confirm.head())
display(df_death.head())

在这里插入图片描述
问题:
(1) 用 corr() 函数计算县(每行都是一个县)人口与表中最后一天记录日期 死亡数的相关系数。

df_death[['Population','2020/4/26']].corr()

在这里插入图片描述

(2) 截止到 4 月 1 日,统计每一个州零感染县的比例。

df_2 = df_confirm[['Admin2', 'Province_State', '2020/4/1']]
df_3 = df_2.groupby('Province_State')
df_3['2020/4/1'].apply(lambda x: len(x[x==0]) / len(x) )

在这里插入图片描述
在这里插入图片描述

  1. 请找出最先出确证病例的三个县。
df_4 = df_confirm.copy()
columnsdate = df_4.columns[11:];top3 = 3;toptown=[];starttime=[]
for date in columnsdate:
    town = df_4[df_4[date]>0]
    ts = town.shape[0]
    if ts>0:
        top3 -= ts
        starttime += [date for i in range(ts)]
        toptown +=list(town['Admin2'])
        df_4 = df_4.drop(index=town.index)
        if top3<=0:
            break
print('最先发生:',toptown)

在这里插入图片描述

(4) 按州统计单日死亡增长数,并给出哪一个州在哪一天确诊数增长最大(这 里指的是在全部州和全部天两个指标一块儿算,不是分别算)。 (5) 现需对每一个州编制确证与死亡表,第一列为时间,而且起始时间为该州 开始出现死亡比例的那一天,第二列和第三列分别为确证数和死亡数, 每一个州须要保存为一个单独的 csv 文件,文件名为“州名.csv”。 (6) 现需对 4 月 1 日至 4 月 10 日编制新增确证数与新增死亡数表,第一列 为州名,第二列和第三列分别为新增确证数和新增死亡数,分别保存为 十个单独的 csv 文件,文件名为“日期.csv”。