Переименовать сто или более имен столбцов в pandas фрейм данных - PullRequest
0 голосов
/ 01 августа 2020

Я работаю с данными John Hopkins Covid для личного использования, чтобы создавать диаграммы. Данные показывают совокупное количество смертей по странам, я хочу смертей в день. Мне кажется, самый простой способ - создать два фрейма данных и вычесть один из другого. Но в файле есть имена столбцов в виде дат и кода, например, df3 = df2 - df1 вычитает столбцы с совпадающими датами. Поэтому я хочу переименовать все столбцы с помощью простого индекса, например, 1, 2, 3, ....

Я не могу понять, как это сделать?

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Вы можете изменить форму данных: использовать даты и метки строк и использовать страну, провинцию в качестве меток столбцов.

import pandas as pd

covid_csv = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv'

df_raw = (pd.read_csv(covid_csv)
          .set_index(['Country/Region', 'Province/State'])
          .drop(columns=['Lat', 'Long'])
          .transpose())

df_raw.index = pd.to_datetime(df_raw.index)

print( df_raw.iloc[-5:, 0:5] )

Country/Region Afghanistan Albania Algeria Andorra Angola
Province/State         NaN     NaN     NaN     NaN    NaN
2020-07-27            1269     144    1163      52     41
2020-07-28            1270     148    1174      52     47
2020-07-29            1271     150    1186      52     48
2020-07-30            1271     154    1200      52     51
2020-07-31            1272     157    1210      52     52

Теперь вы можете использовать богатый набор инструментов pandas для времени -серийный анализ. Например, используйте от diff() до go от совокупного количества смертей до дневных ставок. Или вы можете вычислить скользящие средние за N дней, создать графики временных рядов, ...

print(df_raw.diff().iloc[-5:, 0:5])

Country/Region Afghanistan Albania Algeria Andorra Angola
Province/State         NaN     NaN     NaN     NaN    NaN
2020-07-27            10.0     6.0     8.0     0.0    1.0
2020-07-28             1.0     4.0    11.0     0.0    6.0
2020-07-29             1.0     2.0    12.0     0.0    1.0
2020-07-30             0.0     4.0    14.0     0.0    3.0
2020-07-31             1.0     3.0    10.0     0.0    1.0

Наконец, df_raw.sum(level='Country/Region', axis=1) объединит все провинции в стране.

0 голосов
/ 01 августа 2020

Спасибо за время и усилия, но я нашел простой способ.

для i, строка в enumerate (df): df.rename (columns = {row: str (i)}, inplace = True)

, чтобы изменить имена столбцов, а затем

для i, строка в enumerate (df): df.rename (columns = {row: str (i + 43853)}, inplace = Верно)

, чтобы вернуть их на нужные мне даты.

0 голосов
/ 01 августа 2020
new_names=list(range(data.shape[1]))
data.columns=new_names

Это переименовывает столбцы данных с 0 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...