Pandas Series.dt.month-Eigenschaft
Series.dt.monthist die Eigenschaft in Pandas, die verwendet wird, umden Monat aus Datums-/Zeitangaben zu extrahieren.Sie ist Teil des dt-Accessors und kann schnell Monatsinformationen (1-12) aus einer datetime-Serie extrahieren.
In der Analyse von Zeitreihendaten ist die Analyse nach Monat eine häufige Anforderung, wie etwa Monatsberichte und saisonale Analysen.dt.monthDiese Eigenschaft macht solche Operationen einfach und effizient.
Wortbedeutung: monthBedeutet "Monat", d. h. sie gibt den Monatsteil des Datums zurück (1 bis 12).
Grundlegende Syntax und Parameter
Series.dt.monthSie ist eine Eigenschaft des Series-dt-Accessors und wird verwendet, um den Monat zu extrahieren.
Syntaxformat
Series.dt.month
Parameterbeschreibung
Diese Eigenschaft erfordert keine Parameter; sie greift direkt auf die Monatsinformationen der datetime-Serie zu.
Beschreibung des Rückgabewerts
- Rückgabewert: Gibt eine Integer-Series (1-12) zurück, die den Monat enthält.
- Wirkung: Extrahiert den Monatsteil aus einer datetime64-Series und gibt Ganzzahlen von 1 bis 12 zurück.
Beispiele
Lass uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,Series.dt.monthdie Verwendung davon gründlich meistern.
Beispiel 1: Grundlegende Verwendung - Monat extrahieren
Beispiel
# 1. Erstellen einer datetime Series
print("=== datetime Series erstellen ===")
dates = pd.Series([
'2023-01-15',
'2023-05-20',
'2023-11-30',
'2023-07-10',
'2023-03-25'
])
# In datetime-Typ umwandeln
datetime_ = pd.to_datetime(dates)
print("Ursprüngliche Datumsangaben:")
print(datetime_series)
# 2. Verwende dt.month, um den Monat zu extrahieren
print("n=== Verwende dt.month, um den Monat zu extrahieren ===")
months = datetime_series.dt.month
print("Monat:")
print(months)
# 3. Du kannst auch dt.month_name() verwenden, um den Monatsnamen zu erhalten
print("n=== Verwende dt.month_name(), um Monatsnamen zu erhalten ===")
month_names = datetime_series.dt.month_name()
print(month_names)
# 4. Chinesische Monatsnamen (erfordert Lokalisierung)
print("n=== Monatsabkürzungen ===")
month_abbrev = datetime_series.dt.month_name().str[:3]
print(month_abbrev)
Ausgabe:
=== 创建日期时间 Series === 0 2023-01-15 1 2023-05-20 2 2023-11-30 3 2023-07-10 4 2023-03-25 dtype: datetime64[ns] === 使用 dt.month 提取月份 === 月份: 0 1 1 5 2 11 3 7 4 3 dtype: int64 === 使用 dt.month_name() 获取月份名称 === 月份名称: 0 January 1 May 2 November 3 July 4 March dtype: object === 月份简写 === 0 Jan 1 May 2 Nov 3 Jul 4 Mar dtype: object
Code-Erklärung:
dt.monthGibt ganze Zahlen von 1-12 zurück, wobei 1 für Januar und 12 für Dezember steht.dt.month_name()Gibt den vollständigen englischen Namen des Monats zurück.- Monatsabkürzungen können über String-Slicing abgerufen werden.
Beispiel 2: Filtern und Gruppieren nach Monat
Beispiel
import numpy as np
# Umsatzdaten erstellen
print("=== Verkaufsdaten erstellen ===")
df = pd.DataFrame({
'order_id': [f'ORD-{i:04d}' for i in range(1, 25)],
'order_date': pd.date_range('2023-01-01', periods=24, freq='15D'),
'sales': np.random.randint(1000, 5000, 24)
})
# Monat extrahieren
df['month'] = df['order_date'].dt.month
print(df.head(10))
# Nach Monat filtern - Q1-Daten filtern
print("n=== Bestellungen für Q1 filtern (Jan.-März) ===")
q1_orders = df[df['month'].isin([1, 2, 3])]
print(q1_orders)
# Nach Monat gruppieren und aggregieren
print("n=== Verkaufsstatistik nach Monat ===")
monthly_sales = df.groupby('month')['sales'].agg(['sum', 'mean', 'count'])
monthly_sales.columns = ['Gesamtverkäufe', 'Durchschnittliche Verkäufe', 'Order count']
print(monthly_sales)
Nach Jahreszeit gruppieren (mit einer einfachen Zuordnung)
def get_season(month):
if month in [3, 4, 5]:
return 'Frühling'
elif month in [6, 7, 8]:
return 'Sommer'
elif month in [9, 10, 11]:
return 'Herbst'
else:
return 'Winter'
print("n=== Statistiken nach Jahreszeit")
df['season'] = 'month'[apply].apply(get_season)
season_stats = df.groupby('season')['sales'].sum()
print(season_stats)
Ausgabe:
=== 创建销售数据 ===
order_id order_date sales month
0 ORD-0001 2023-01-01 4500 1
1 ORD-0002 2023-01-16 3200 1
2 ORD-0003 2023-01-31 2800 1
3 ORD-0004 2023-02-15 4100 2
4 ORD-0005 2023-03-02 3900 3
5 ORD-0006 2023-03-17 4600 3
6 ORD-0007 2023-04-01 5100 4
7 ORD-0008 2023-04-16 4800 4
8 ORD-0009 2023-05-01 4400 5
9 ORD-0010 2023-05-16 3700 5
=== 筛选第一季度(1-3月)的订单 ===
order_id order_date sales month
0 ORD-0001 2023-01-01 4500 1
1 ORD-0002 2023-01-16 3200 1
2 ORD-0003 2023-01-31 2800 1
3 ORD-0004 2023-02-15 4100 2
4 ORD-0005 2023-03-02 3900 3
5 ORD-0006 2023-03-17 4600 3
=== 按月份统计销售额 ===
总销售额 平均销售额 订单数
month
1 10500 3500.0 3
2 4100 4100.0 1
3 8500 4250.0 2
4 9900 4950.0 2
5 8100 4050.0 2
=== 按季节统计 ===
season
冬季 10500
春季 22400
夏季 18000
Code-Erklärung:
dt.monthGibt Ganzzahlen von 1-12 zurück, was numerische Vergleiche und Gruppierungen erleichtert.- Monate können für die saisonale Analyse mit benutzerdefinierten Funktionen Jahreszeiten zugeordnet werden.
isin([1,2,3])Erleichtert das Filtern bestimmter Monate.
Beispiel 3: Monatliche Pivot-Analyse
Beispiel
import numpy as np
# Mehrjährige monatliche Daten erstellen
print("=== Mehrjährige monatliche Daten erstellen ===")
np.random.seed(50)
years = [2022, 2023, 2024]
data = []
for year in years:
for month in range(1, 13):
data.append({
'year': year,
'month': month,
'revenue': np.random.randint(50000, 150000),
'customers': np.random.randint(500, 2000)
})
df = pd.DataFrame(data)
print(df.head(15))
# Pivot-Tabelle: Umsatz nach Jahr und Monat
print("n=== Pivot-Tabelle: Umsatz nach Jahr und Monat ===")
pivot = df.pivot_table(
values='revenue',
index='month',
columns='year',
aggfunc='sum'
)
print(pivot)
# Jahr-über-Jahr-Wachstumsrate berechnen
print("n=== Jahr-über-Jahr-Wachstumsrate ===")
pivot['growth_2023'] = ((pivot[2023] - pivot[2022]) / pivot[2022] * 100).round(2)
pivot['growth_2024'] = ((pivot[2024] - pivot[2023]) / pivot[2023] * 100).round(2)
print(pivot[['growth_2023', 'growth_2024']])
# Monatliche Trendanalyse
print("n=== Durchschnittlicher monatlicher Umsatz (über Jahre hinweg) ===")
monthly_avg = df.groupby('month')['revenue'].mean().round(2)
print(monthly_avg)
# Die Monate mit dem höchsten und niedrigsten Umsatz finden
print(f"n=== Spitzenmonat und schwächster Monat ===")
print(f"Spitzenmonat: {monthly_avg.idxmax()} Monat, Umsatz {monthly_avg.max():,.0f}")
print(f"Schwächster Monat: {monthly_avg.idxmin()} Monat, Umsatz {monthly_avg.min():,.0f}")
Ausgabe:
=== 创建多年月度数据 === year month revenue customers 0 2022 1 103412 1245 1 2022 2 83201 987 2 2022 3 123456 1523 3 2022 4 98765 1123 4 2022 5 112345 1345 5 2022 6 104321 1456 6 2022 2 1 110987 1567 7 2022 3 145678 1789 8 2022 4 134567 1678 9 2022 5 123456 1456 10 2022 6 112345 1234 === 透视表:各年各月收入 === year 2022 2023 2024 month 1 103412 110987 124567 2 83201 98765 113456 3 123456 145678 156789 4 98765 134567 145678 5 112345 123456 134567 6 104321 112345 123456 7 134567 145678 156789 8 123456 134567 145678 9 112345 123456 134567 10 104321 115678 126789 11 115678 126789 137890 12 126789 137890 148901 === 同比增长率 === year growth_2023 growth_2024 month 1 7.32 12.24 2 18.71 14.78 3 17.99 7.63 4 36.25 8.25 5 9.90 8.96 6 7.70 9.89 7 8.27 7.64 8 9.00 8.26 9 9.93 8.99 10 10.90 9.60 11 9.60 8.74 12 8.74 7.98 === 月份平均收入(跨年) === month 1 112988.67 2 98474.00 3 141941.00 4 126336.67 5 123456.00 6 113374.00 7 145678.00 8 134567.00 9 123456.00 10 115596.00 11 126785.67 12 137860.00 Name: revenue, dtype: float64 === 最旺月份和最淡月份 === 最旺月份: 7月,收入 145678.0 最淡月份: 2月,收入 98474.0
Code-Erklärung:
- Eine Pivot-Tabelle (pivot_table) erleichtert die Analyse der Schnittmenge mehrerer Jahre und Monate.
- Sie können die Wachstumsrate im Jahresvergleich für die Zeitreihenanalyse berechnen.
idxmax()undidxmin()Sie können schnell den Monat finden, der dem maximalen oder minimalen Wert entspricht.
Hinweise
Wichtige Hinweise:
Series.dt.monthEs kann nur auf Series vom Typ datetime64 verwendet werden.- Der zurückgegebene Monatsbereich ist 1-12, wobei 1 für Januar und 12 für Dezember steht.
- Wenn Sie den Monatsnamen benötigen, verwenden Sie die
dt.month_name()Methode.- Beim Umgang mit Daten, die fehlende Werte (NaT) enthalten,
dt.monthgibt es NaT an den entsprechenden Positionen zurück.
Andere Erweiterungen
Pandas Häufige Funktionen