Pandas & NumPy Academy · Lektion

Visualisering af månedlige tendenser

Visualisér den månedlige omsætning som et linjediagram, læg et glidende gennemsnit over tre måneder ovenpå, og annotér månederne med højeste og laveste værdi.

Lektion 4 af 413 trin

Visualisering af månedlige tendenser er en gratis Pandas & NumPy Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Pandas & NumPy Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Pandas & NumPy Academy-kurset indeholder 4 lektioner i alt.

Beregning af månedlige omsætningstotaler

Før du tegner diagrammer, skal du aggregere salgs-DataFrame til månedlige totaler. Gruppér efter kolonnen year_month af typen Period, og summér omsætningen. Konvertér PeriodIndex til et DatetimeIndex med .to_timestamp(), så Matplotlibs datoformatering gengiver akseetiketterne korrekt. Sortering efter indeks sikrer, at linjediagrammet forløber kronologisk fra venstre mod højre.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_parquet('sales_features.parquet')

monthly = df.groupby('year_month')['revenue'].sum().sort_index()
monthly.index = monthly.index.to_timestamp()
print(monthly.head())

Tegning af det månedlige omsætningslinjediagram

Opret en Figure og Axes med plt.subplots(figsize=(12, 5)), og kald ax.plot() for at tegne trenden i den månedlige omsætning. Brug marker='o' til at placere en prik ved hver måned, så de enkelte datapunkter er synlige, selv når linjen er glat. Angiv farve og linjebredde, så den primære trend skiller sig ud fra eventuelle ekstra kurver, du tilføjer senere.

fig, ax = plt.subplots(figsize=(12, 5))

ax.plot(monthly.index, monthly.values,
        color='steelblue', linewidth=2, marker='o', markersize=5,
        label='Monthly Revenue')

ax.set_title('Monthly Revenue Trend')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue (USD)')
plt.tight_layout()
plt.show()

Overlejring af et glidende gennemsnit over 3 måneder

En rå linje over den månedlige omsætning kan se ujævn ud på grund af sæsonbetinget støj. Overlejér et glidende gennemsnit over 3 måneder, beregnet med monthly.rolling(3).mean(), for at vise den underliggende trend tydeligere. Tegn det som en stiplet linje i en kontrastfarve, så det skiller sig ud fra den rå serie uden at skjule den.

rolling_avg = monthly.rolling(3).mean()

ax.plot(rolling_avg.index, rolling_avg.values,
        color='darkorange', linewidth=2, linestyle='--',
        label='3-Month Moving Avg')

ax.legend()
plt.show()

Kommentering af måneden med højest omsætning

Brug ax.annotate() til at markere den måned, der har den højeste omsætning. Find toppen med monthly.idxmax() og dens værdi med monthly.max(). Kommentarpilen peger fra en tekstetiket til toppunktet i dataene, så indsigten straks er synlig for alle, der læser diagrammet, også dem der modtager det som en PNG- eller PDF-fil.

peak_date = monthly.idxmax()
peak_val = monthly.max()

ax.annotate(f'Peak: ${peak_val:,.0f}',
            xy=(peak_date, peak_val),
            xytext=(peak_date, peak_val * 1.1),
            arrowprops=dict(arrowstyle='->', color='red'),
            color='red', fontsize=10)
plt.show()

Kommentering af måneden med lavest omsætning

Markér på samme måde den måned, der har den laveste omsætning, med monthly.idxmin() for at identificere mulig sæsonvariation eller forstyrrelser. Annotationer af både toppen og bunden giver det fulde billede: De gør det muligt for interessenter at se ikke kun den bedste måned, men også hvor langt omsætningen kan falde, hvilket bidrager til planlægning af pengestrømmen.

trough_date = monthly.idxmin()
trough_val = monthly.min()

ax.annotate(f'Trough: ${trough_val:,.0f}',
            xy=(trough_date, trough_val),
            xytext=(trough_date, trough_val * 0.85),
            arrowprops=dict(arrowstyle='->', color='navy'),
            color='navy', fontsize=10)
plt.show()

Formatering af etiketter på datomærker

Matplotlibs standardetiketter for datomærker overlapper ofte eller bruger et ulæseligt format. Importér mdates fra matplotlib, og angiv en MonthLocator og en DateFormatter for at styre mærkefrekvens og etiketformat. Ved at rotere etiketterne 45 grader undgår du overlap på en akse med 12 måneder.

import matplotlib.dates as mdates

ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))

plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

Tilføjelse af et skyggeområde for Q4

Fremhæv Q4-perioden (oktober–december) med en skygget baggrund ved hjælp af ax.axvspan(). Det gør sæsonmønstre synlige med det samme: Hvis toppen konsekvent falder i det skyggelagte område, er Q4 en vigtig salgsperiode, der er værd at målrette med kampagner. Parameteren alpha styrer gennemsigtigheden af skyggen.

import datetime

q4_start = datetime.datetime(2023, 10, 1)
q4_end = datetime.datetime(2023, 12, 31)

ax.axvspan(q4_start, q4_end, alpha=0.15, color='gold', label='Q4')
ax.legend()
plt.show()

Plotning af omsætning pr. kategori over tid

Opret et diagram med flere linjer, hvor hver linje repræsenterer en produktkategori. Pivotér DataFrame'en med månedlige data pr. kategori, så kolonnerne er kategorier, og indekset er tid. Gå derefter gennem kolonnerne, og kald ax.plot() for hver af dem. Matplotlib tildeler automatisk en anden farve til hver linje, når funktionen kaldes gentagne gange på samme Axes.

monthly_cat = df.groupby(['year_month', 'category'])['revenue'].sum().unstack('category')
monthly_cat.index = monthly_cat.index.to_timestamp()

fig, ax = plt.subplots(figsize=(12, 6))
for col in monthly_cat.columns:
    ax.plot(monthly_cat.index, monthly_cat[col], label=col, linewidth=1.5)

ax.legend(loc='upper left', fontsize=8)
ax.set_title('Monthly Revenue by Category')
plt.tight_layout()
plt.show()

Stablet søjlediagram for månedlig omsætning

Et stablet søjlediagram viser den samlede månedlige omsætning og viser samtidig hver kategoris bidrag til stakken. Brug monthly_cat.plot(kind='bar', stacked=True, ax=ax) direkte på den pivoterede DataFrame. Stablede søjler er bedst, når du har færre end seks kategorier; ellers bliver farverne svære at skelne fra hinanden.

fig, ax = plt.subplots(figsize=(12, 5))

monthly_cat.plot(kind='bar', stacked=True, ax=ax, colormap='tab10')

ax.set_title('Monthly Revenue by Category (Stacked)')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
ax.legend(loc='upper left', fontsize=8)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

Vækstrate fra måned til måned

Plot den procentvise vækst fra måned til måned sammen med omsætningen for at give kontekst: En visuelt lille søjle i januar kan repræsentere et vækstspring på 20 % fra den foregående måned. Beregn væksten med monthly.pct_change() * 100, og plot den på en sekundær y-akse ved hjælp af ax.twinx() for at dele den samme x-akse uden at blande enhederne sammen.

growth = monthly.pct_change() * 100

fig, ax1 = plt.subplots(figsize=(12, 5))
ax2 = ax1.twinx()

ax1.bar(monthly.index, monthly.values, width=20, color='steelblue', alpha=0.6, label='Revenue')
ax2.plot(growth.index, growth.values, color='red', marker='o', label='MoM Growth %')

ax1.set_ylabel('Revenue')
ax2.set_ylabel('MoM Growth %')
plt.title('Revenue and Month-over-Month Growth')
plt.tight_layout()
plt.show()

Lagring af figuren til rapporter

Brug fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight') til at generere en PNG-fil i høj opløsning, der egner sig til præsentationer eller webdashboards. Argumentet bbox_inches='tight' beskærer overskydende hvid plads, og dpi=150 giver et skarpt billede uden en unødigt stor fil. Gem også som PDF til rapporter i trykkvalitet.

fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight')
fig.savefig('monthly_trend.pdf', bbox_inches='tight')
print('Figure saved as PNG and PDF')

Hurtigt tjek

Test din forståelse af begreberne inden for dataanalyse fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du at: beregne månedlige omsætningstal og plotte dem som et linjediagram, lægge et glidende gennemsnit oven på diagrammet og annotere månederne med den højeste og laveste omsætning samt gemme figurer i høj kvalitet til publikation som PNG og PDF. Som det næste ser vi på sessionsdannelse og hændelsesrækkefølge i data om brugeradfærd.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Visualisering af månedlige tendenser” gratis?

Ja — hele teksten til “Visualisering af månedlige tendenser” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Pandas & NumPy Academy-kurset, skal du opgradere til CoddyKit PRO. Pandas & NumPy Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Visualisering af månedlige tendenser”?

Visualisér den månedlige omsætning som et linjediagram, læg et glidende gennemsnit over tre måneder ovenpå, og annotér månederne med højeste og laveste værdi. Du øver dig i Pandas & NumPy Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Pandas & NumPy Academy?

Der kræves ingen tidligere erfaring. Pandas & NumPy Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Visualisering af månedlige tendenser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Pandas & NumPy Academy-lektion?

Ja. Alle Pandas & NumPy Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Indlæsning og kontrol af salgdsdatasættet
  2. Omsætningsberegninger og feature engineering
  3. GroupBy-analyse efter region og kategori
  4. Visualisering af månedlige tendenser
← Tilbage til Pandas & NumPy Academy