为了账号安全,请及时绑定邮箱和手机立即绑定

用 python 抓取 CSV 数据

用 python 抓取 CSV 数据

青春有我 2023-05-23 15:36:12
我只对三列感兴趣,“大陆”、“日期”和一个数据列。我想添加来自相同大陆和日期的所有数据,例如按日期显示每个大陆的数据。这是我当前的代码(到目前为止,我已经创建了字典和递归来用每个日期输入数据填充它们):df=pd.read_csv(r'C:\Users\julio\Desktop\proyect\owid-covid-data.csv')print(df.iloc[0,1])# continentprint(df.iloc[0,3])# dateprint(df.iloc[0,5])# data (new_cases)Africa=dict()Europe=dict()Asia=dict()NorthAmerica=dict()SouthAmerica=dict()Oceania=dict()for index, row in df.iterrows():    if row['continent']=='Asia':        Asia.update({df.iloc[index,3],df.iloc[index,5]})    if row['continent']=='Africa':        Africa.update({df.iloc[index,3],df.iloc[index,5]})    if row['continent']=='Europe':        Europe.update({df.iloc[index,3],df.iloc[index,5]})    if row['continent']=='North America':        NorthAmerica.update({df.iloc[index,3],df.iloc[index,5]})    if row['continent']=='South America':        SouthAmerica.update({df.iloc[index,3],df.iloc[index,5]})    if row['continent']=='Oceania':        Oceania.update({df.iloc[index,3],df.iloc[index,5]})我收到一条错误消息,指出字典更新所需的项目不止 2 个。怎么了?
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

首先,添加每个大陆和日期的数据。

df.groupby(['continent', 'date'])['data'].sum().reset_index()

然后,按大陆和日期升序对数据进行排序

df.sort_values(['continent', 'date'], ascending=True)


查看完整回答
反对 回复 2023-05-23
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

具体到错误消息,如果我理解你正在尝试做正确的事情,那就是

Asia.update({df.iloc[index,3]:df.iloc[index,5]})

其他也类似。

查看完整回答
反对 回复 2023-05-23
?
繁花如伊

TA贡献2012条经验 获得超12个赞

我不确定我是否理解创建字典和 iterrows 循环背后的逻辑。但是这里有一种方法可以下载原始帖子中的三列。


import pandas as pd

filename = ('https://raw.githubusercontent.com'

            '/owid/covid-19-data/master/public/data/owid-covid-data.csv')

fields = ['continent', 'date', 'new_cases']

df_raw = pd.read_csv(filename, usecols=fields, parse_dates=['date'])

现在,重新整形以将日期转换为行标签,将大洲转换为列标签:


df = df_raw.pivot_table(index='date',

                        columns='continent',

                        values='new_cases',

                        aggfunc='sum',

                        fill_value=0,

                       )

print(df.tail())


continent   Africa   Asia  Europe  North America  Oceania  South America

date                                                                    

2020-08-11    8828  81397   23272          60213      331          46289

2020-08-12    7895  88186   19821          59165      402          85542

2020-08-13    9529  94335   26994          67675      493          89787

2020-08-14   10515  92004   25367          64727      285          93364

2020-08-15   12689  95916   18686          76850      434          84099


查看完整回答
反对 回复 2023-05-23
  • 3 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信