#python #pandas
Вопрос:
Я хочу создать горизонтальную гистограмму, однако я думаю, что сначала мне придется использовать этот pivot
метод. Текущий фрейм данных состоит из двух строк и множества столбцов:
Имена не нужны не нужны 2 год1 год2 год3 Джо 0 0 240.87 2.30 0.85 Доу 0 0 243,72 2,35 0,84
Чтобы отобразить это в виде гистограммы, я хотел бы сначала преобразовать данные в это:
Годы Джо Доу1 240.87 243.72 год2 2.30 2.35 год3 .85 .84
Таким образом, у меня могут быть две горизонтальные гистограммы, наложенные друг на друга, где по оси y указаны годы, а по оси x-номера данных.
Ответ №1:
На самом деле достаточно простого переноса. В этом нет необходимости pivot
.
df1 = df.set_index('Names')[['year1','year2','year3']].T
print(df1)
Joe Doe
year1 240.87 243.72
year2 2.30 2.35
year3 0.85 0.84
Ответ №2:
Я немного изменил значения, чтобы отображались столбики.
Ты можешь сделать что-то подобное
import pandas as pd
import matplotlib.pyplot as plt
columns = ['Names', 'year1', 'year2', 'year3']
df = pd.read_csv('data.csv', usecols=columns)
transpose_df = df.set_index('Names').transpose()
# If names are not unique, you might want to group by and aggregate
# transpose_df = df.groupby('Names').mean().transpose()
print(transpose_df)
transpose_df.plot.barh()
plt.show()
Какие отпечатки
Names Joe Doe
year1 240.87 243.72
year2 60.00 20.00
year3 100.00 150.00
И производит
CSV, который я использовал
Names,not_needed,not_needed2,year1,year2,year3
Joe,0,0,240.87,60,100
Doe,0,0,243.72,20,150