pandas综合

1.2002 年-2018 年上海机动车拍照拍卖

import pandas as pd
import numpy as np
df_car = pd.read_csv('data/2002年-2018年上海机动车拍照拍卖.csv')
print(df_car.shape)
print(df_car.info())
print(df_car.head())

#(1) 找出哪轮拍卖的中标率首次小于 5%
df = df_car.copy()
df['percent'] = df.apply(lambda x:x['Total number of license issued']/x['Total number of applicants'],axis=1)
# 修改 Date 列的格式为str(实际上改为int或datetime更好)
from dateutil.parser import parse
df.Date=df.Date.apply(lambda x:str(parse('-'.join([str(2000+int(x.split('-')[0])),x.split('-')[1]])))[:7])
# 按Date
df=df.sort_values(by='Date')
df.head()
for index, row in df.iterrows():
   if row['percent']<0.05:
        print(row['Date'])
        break
print(df.head(1))

#(2) 按年统计拍卖最低价的下列统计量:最大值、均值、0.75 分位数,要求 显示在同一张表上。
df2=df.copy()
mulidx=pd.MultiIndex.from_tuples(df2.Date.apply(lambda x:x.split('-')))
df2.index=mulidx
df2=df2.reset_index()
df2=df2.rename({'level_0':'年份', 'level_1':'月份'},axis=1).drop(columns='Date')
print(df2.groupby('年份')['lowest price '].agg([('最大值','max'),('均值','mean'),('0.75分位数',lambda x:x.quantile(0.75))]))

#(3) 将第一列时间列拆分成两个列,一列为年份(格式为 20××),另一列为 月份(英语缩写),添加到列表作为第一第二列,并将原表第一列删除, 其他列依次向后顺延。
df3 = df2.copy()
print(df3.head())

#d(4)现在将表格行索引设为多级索引,外层为年份,内层为原表格第二至第五列的变量名,列索引为月份。
df4 = df3.copy()
newcolumns = ['年份']+list(df.columns[1:-2])
df4.set_index(newcolumns)
print(df4.head())

三,新冠肺炎在美国的传播

import pandas as pd
import numpy as np
df_q=pd.read_csv('data/美国确证数.csv')
df_s=pd.read_csv('data/美国死亡数.csv')
df_q.info()
df_s.info()

1.用 corr() 函数计算县(每行都是一个县)人口与表中最后一天记录日期 死亡数的相关系数。

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

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

df_q_ratio=df_q.loc[:,['Admin2','Province_State','2020/4/1']]
df_q_ratio
s=[]
r=[]
for x in df_q_ratio['Province_State'].unique():
    s.append(x)
    if 0  in df_q_ratio.set_index(['Province_State','Admin2']).loc[x]['2020/4/1'].value_counts():
        r.append(df_q_ratio.set_index(['Province_State','Admin2']).loc[x]['2020/4/1'].value_counts()[0]/df_q_ratio.set_index(['Province_State','Admin2']).loc[x]['2020/4/1'].index.size)  
    else:
        r.append(1)
result=pd.DataFrame({'Province_State':s,'ratio':r})
result.head()

3.请找出最早出确证病例的三个县。

df=df_q.set_index('Admin2').loc[:,list(df_q.columns)[11:107]]
df.head()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值