#python #pandas #numpy #csv #matplotlib
Вопрос:
Я написал код python ниже, чтобы прочитать CSV и создать несколько графиков одновременно. Однако я не могу понять, как дать matplotlib значение местоположения из csv, который я читаю, поскольку я хотел бы, чтобы каждый участок был помечен значением местоположения, по которому я агрегирую. Пожалуйста, ознакомьтесь с кодом и скриншотом ниже.
import pandas as pd
import datetime
import csv
import matplotlib.pyplot as plt
from google.colab import files
import matplotlib.pyplot as plt
import numpy as np
myfile = files.upload()
df = pd.read_csv('Electricity.csv')
df2 = df.groupby(['Location'], as_index=False)
print(df2)
df2.plot(x='Period', y = 'score', ylim=(0,11))#IDK about ylim being necessary
plt.title('Location', color='black')
plt._show()
Ответ №1:
Сделайте перерисовку осей df2.plot
, и, поскольку вы группируетесь по Location
, у вас будет что-то похожее на:
Location NaN
0 Location1 AxesSubplot(0.125,0.11;0.775x0.77)
1 Location2 AxesSubplot(0.125,0.11;0.775x0.77)
2 Location3 AxesSubplot(0.125,0.11;0.775x0.77)
Используйте apply
функцию с axis=1
, чтобы получить текущую ось и местоположение. С помощью объекта оси set_title
используйте значение Location
для каждого участка.
...
df2.apply(print)
ax = df2.plot(x='Period', y='score', ylim=(0, 11))
ax.apply(lambda x: x[1].set_title(x['Location']), axis=1)
plt.show()