Codes que vous souhaitez atteindre principalement lorsque vous le souhaitez dans Pandas
** J'ai essayé de faire comme le calendrier de l'Avent, mais je suis désolé de ne pas avoir pu venir à temps **
Je l'ajouterai bientôt
Ci-dessous, donnez un alias comme suit
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
pd.set_option('display.max_columns', 100)
pd.set_option('display.max_rows', 500)
DF.desctibe(include='all')
Je me réfère ici https://note.nkmk.me/python-pandas-time-series-resample-asfreq/
df = pd.DataFrame({'data' : range(0, 30, 2)},
index=pd.date_range(start='2018/1/1', end='2018/1/30', freq='2D'))
Par exemple, si vous souhaitez extraire des données tous les 3 jours, utilisez asfreq (). Les dates qui n'ont pas de données à l'origine seront Aucune.
df.asfreq(freq='3D')
before | after |
---|---|
Si vous souhaitez extraire chaque mercredi et remplir la partie None avec les données précédentes, utilisez asfreq (freq = 'W-WED', method = 'pad').
df.asfreq(freq='W-WED', method='pad')
before | after |
---|---|
Inversement, utilisez asfreq (method = 'bfill') pour remplir la valeur de fin.
df.asfreq(freq='W-WED', method='bfill')
before | after |
---|---|
Utilisez resample ()
df.resample('W').sum()
before | after |
---|---|
Les données ressemblent à ceci
df2 = pd.DataFrame({'data': range(17)},
index=pd.date_range('2018-08-01', '2018-08-05', freq='6H'))
Utilisez resample ('D'). Sum () pour obtenir le total quotidien.
df2.resample('D').sum()
before | after |
---|---|
Pour la moyenne, utilisez resample ('D'). Mean ().
before | after |
---|---|
Préparer des données virtuelles du 2018/1/1 au 2018/12/31
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
Si vous visualisez ceci,
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(df3.index, df3['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
Essayez de visualiser tous les lundis
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.asfreq('W-MON')
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
Visualisé à la fin du mois
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.asfreq('1M')
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'])
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
asfreq ('1M') est le dernier jour du mois
df3.asfreq('1M')
Le premier jour du mois
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.asfreq('1MS')
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'])
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
asfreq ('1MS') sera le premier jour du mois
df3.asfreq('1MS')
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.asfreq('1QS')
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.resample('W').sum()
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
_df = df3.resample('MS').sum()
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(_df.index, _df['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
L'interpolation de séries chronologiques est souvent utilisée pour les modèles professionnels
Cela peut être fait en utilisant bien asfreq ().
df = pd.DataFrame({'data' : range(0, 30, 2)},
index=pd.date_range(start='2018/1/1', end='2018/1/30', freq='2D'))
df2 = df.asfreq('1D')
before | after |
---|---|
Utiliser le jour de la semaine ou le jour de la semaine pour les séries datatime
0 est lundi, 6 est dimanche
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeIndex.weekday.html
np.random.seed(0)
df3 = pd.DataFrame({'data':
np.maximum(0, np.minimum(np.arange(0, -365, -1) + 182, 0) + np.minimum(np.arange(365), 182) + np.floor(np.random.normal(50, 50, 365)))},
index=pd.date_range('2018-01-01', '2018-12-31'))
df3.index.weekday
Int64Index([0, 1, 2, 3, 4, 5, 6, 0, 1, 2,
...
5, 6, 0, 1, 2, 3, 4, 5, 6, 0],
dtype='int64', length=365)
Recommended Posts