Разделение столбца даты и времени для построения нескольких лет друг над другом - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь построить данные о ветре за 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)

, которые я нашел на этом форуме. Однако, похоже, это не работает.

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