Codes, die Sie hauptsächlich erreichen möchten, wenn Sie in Pandas möchten
** Ich habe versucht, es wie den Adventskalender zu machen, aber es tut mir leid, dass ich es nicht rechtzeitig schaffen konnte **
Ich werde es bald hinzufügen
Geben Sie unten einen Alias wie folgt an
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')
Ich habe hier darauf hingewiesen 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'))
Wenn Sie beispielsweise alle 3 Tage Daten extrahieren möchten, verwenden Sie asfreq (). Daten, die ursprünglich keine Daten haben, sind Keine.
df.asfreq(freq='3D')
before | after |
---|---|
Wenn Sie jeden Mittwoch extrahieren und den Teil Keine mit den vorherigen Daten füllen möchten, verwenden Sie asfreq (freq = 'W-WED', method = 'pad').
df.asfreq(freq='W-WED', method='pad')
before | after |
---|---|
Verwenden Sie umgekehrt asfreq (method = 'bfill'), um den nachfolgenden Wert einzugeben.
df.asfreq(freq='W-WED', method='bfill')
before | after |
---|---|
Verwenden Sie resample ()
df.resample('W').sum()
before | after |
---|---|
Die Daten sehen so aus
df2 = pd.DataFrame({'data': range(17)},
index=pd.date_range('2018-08-01', '2018-08-05', freq='6H'))
Verwenden Sie Resample ('D'). Sum (), um die tägliche Summe zu erhalten.
df2.resample('D').sum()
before | after |
---|---|
Verwenden Sie für den Durchschnitt Resample ('D'). Mean ().
before | after |
---|---|
Bereiten Sie virtuelle Daten von 2018/1/1 bis 2018/12/31 vor
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'))
Wenn Sie dies visualisieren,
plt.figure(figsize=(18, 6), facecolor='white')
plt.plot(df3.index, df3['data'], marker='o')
plt.xticks(rotation=90)
plt.show()
graph | data |
---|---|
Versuche jeden Montag zu visualisieren
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 |
---|---|
Visualisiert am Ende des Monats
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') ist der letzte Tag des Monats
df3.asfreq('1M')
Der erste Tag des Monats
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') ist der erste Tag des Monats
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 |
---|---|
Zeitreiheninterpolation wird häufig für Berufsmuster verwendet
Dies kann mit asfreq () gut erfolgen.
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 |
---|---|
Verwenden Sie Wochentag oder Wochentag für Datenzeitserien
0 ist Montag, 6 ist Sonntag
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