Я пытаюсь построить данные о ветре за 10 лет. Я хотел бы сделать 12 графиков (по 1 на каждый месяц) с 10 различными линиями (по 1 на каждый год), и некоторые графики, чтобы показать среднее / мин / макс за эти 10 лет.
У меня есть 2 CSV's , но они имеют формат ГГГГММДД. Я думал, что лучший способ нанести эти годы друг на друга - это удалить значение года. Я попытался разделить их, используя:
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import datetime as dt
"""Data nov 2009 until dec 2010"""
df_data = pd.read_csv("P11-B2.csv", skiprows=[i for i in range(1,35)], usecols=[1,2,4])
df = pd.DataFrame(columns = ['Datetime', 'FH'])
df1 = pd.to_datetime(df_data['YYYYMMDD'], format='%Y%m%d')
df2 = df_data[' HH'].astype('timedelta64[h]')
df['Datetime'] = df1 + df2
df['Year'] = [d.split('-')[0] for d in df.Date]
df['Month'] = [d.split('-')[1] for d in df.Date]
df['Day'] = [d.split('-')[2] for d in df.Date]
df['FH'] = pd.to_numeric(df_data[' FH'], errors ='coerce')
del df1
del df2
del df_data
Я также попробовал следующее:
df_data = pd.read_csv("P11-B2.csv", skiprows=[i for i in range(1,35)], usecols=[1,2,4])
df = pd.DataFrame(columns = ['Datetime', 'FH'])
df1 = pd.to_datetime(df_data['YYYYMMDD'], format='%Y%m%d')
df2 = df_data[' HH'].astype('timedelta64[h]')
df['Datetime'] = df1 + df2
df['FH'] = pd.to_numeric(df_data[' FH'], errors ='coerce')
del df1
del df2
del df_data
df10 = df.copy()
df10 = pd.DataFrame(columns = ['Year', 'Date', 'FH'])
df11 = df.dt.year
df12 = df.dt.month
df13 = df.dt.day
df14 = df.dt.hour
df10['Year'] = df11
df10['Date'] = df12 + df13 + df14
del df11
del df12
del df13
del df14
Однако я явно делаю что-то не так, так как это не похоже на работать
Формат xaxis также довольно беспорядочный, так как даты пишутся поверх друг друга. Я попытался решить эту проблему, добавив:
ax.xaxis.set_major_formatter(month_day_fmt)
, которые я нашел на этом форуме. Однако, похоже, это не работает.