Заменить несколько столбцов с годами для одного столбца - PullRequest
0 голосов
/ 08 января 2019

Я работаю с данными всемирного банка и пытаюсь создать несколько графиков, представляющих время, но данные, которые у меня сейчас есть, выглядят так:

enter image description here

Поскольку я не думаю, что есть способ изменить его на дату и время, я думаю, что единственный способ состоит в том, чтобы заменить все эти столбцы лет на 1 столбец с именем «Год» именами столбцов, которые у меня есть сейчас, в качестве значений и текущих значений в отдельный столбец.

Есть ли в Python какая-нибудь приятная функция, которая позволяет это делать, или мне придется перебирать весь фрейм данных?

Изменить, чтобы включить некоторый код:

df2 = pd.DataFrame({'Country Name': ['Aruba', 'Afghanistan', 'Angola'],
   'Country Code': ['ABW', 'AFG', 'AGO'],
   '1960':[65.66, 32.29, 33.25],
   '1961': [66.07, 32.74, 33.57],
   '1962': [66.44, 33.18, 33.91], 
   '1963': [66.79, 33.62, 34.27], 
   '1964': [66.11, 34.06, 34.65], 
   '1965': [67.44, 34.49, 35.03]}).set_index('Country Name')

1 Ответ

0 голосов
/ 08 января 2019

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

Вы можете попробовать что-то вроде этого:

import pandas as pd
from matplotlib import pyplot as plt

df1 = pd.DataFrame({'Country Name' : ['Aruba', 'Afghanistan', 'Angola'],
   'Country Code' : ['ABW', 'AFG', 'AGO'],
   '1960' : [65.66, 32.29, 33.25],
   '1961' : [66.07, 32.74, 33.57],
   '1962' : [66.44, 33.18, 33.91], 
   '1963' : [66.79, 33.62, 34.27], 
   '1964' : [66.11, 34.06, 34.65], 
   '1965' : [67.44, 34.49, 35.03]})

df2 = df1.transpose()
df2.columns = df1['Country Name']
df2 = df2[2:]
df2['Year'] = df2.index.values

plt.plot(df2['Year'], df2['Aruba'])
plt.plot(df2['Year'], df2['Afghanistan'])
plt.plot(df2['Year'], df2['Angola'])
plt.legend()
plt.show()

Вывод: Вывод графика

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