Sammanfatta resultat i en rapport
Sammanställ viktiga insikter i en strukturerad markdown-sammanfattning med inbäddade referenser till visualiseringar och konkreta nästa steg.
Sammanfatta resultat i en rapport är en gratis lektion i Pandas & NumPy Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Pandas & NumPy Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
Varför en strukturerad EDA-rapport är viktig
Råa Jupyter-anteckningsböcker med hundratals diagram och kodceller är svåra att dela med intressenter som behöver agera utifrån resultaten. En strukturerad EDA-sammanfattningsrapport destillerar de viktigaste insikterna från all er univariata och bivariata analys till en tydlig berättelse. Bra rapporter skiljer resultat (vad data visar) från konsekvenser (vad ni bör göra åt det) och innehåller stödjande visualiseringar endast för centrala påståenden.
EDA-rapportens sex avsnitt
En professionell EDA-rapport innehåller vanligtvis sex avsnitt: 1) Översikt över datamängden (form, källa, tidsperiod), 2) Problem med datakvaliteten (saknade värden, avvikare, dubbletter och hur de hanterats), 3) Fördelningar för viktiga variabler (de viktigaste numeriska och kategoriska kolumnerna), 4) Korrelationer och samband (de starkaste sambanden som hittats), 5) Insikter om undergrupper (gruppskillnader som är viktiga för verksamhetsfrågan) samt 6) Rekommenderade nästa steg (åtgärder för datarensning och förslag på modellering).
Skriva avsnittet om datamängdens översikt
Översiktsavsnittet bör genereras programmatiskt för att alltid vara korrekt. Samla in form, kolumnnamn och datatyper, datumintervall (om tillämpligt) samt datamängdens källa eller version. Om ni skriver detta avsnitt i kod i stället för löptext undviker ni det vanliga felet att beskriva en datamängd med 10 000 rader i en rapport som i själva verket genererades från en rensad version med 9 800 rader.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
print('=== DATASET OVERVIEW ===')
print(f'Shape: {df.shape[0]:,} rows x {df.shape[1]} columns')
print(f'Columns: {", ".join(df.columns)}')
print(f'Numeric: {df.select_dtypes("number").shape[1]} columns')
print(f'Categorical: {df.select_dtypes("object").shape[1]} columns')
print(f'Boolean: {df.select_dtypes("bool").shape[1]} columns')
print(f'Total missing cells: {df.isna().sum().sum():,}')
print(f'Duplicate rows: {df.duplicated().sum()}')Skriva avsnittet om datakvalitet
Avsnittet om datakvalitet listar alla problem som hittats och vilket beslut som fattats för varje problem. Använd tabellformat med kolumnerna: Kolumn, Problem, Allvarlighetsgrad (hög/medel/låg), Vidtagen åtgärd. Beräkna tabellen programmatiskt från profileringsresultaten så att den uppdateras automatiskt när data ändras. Allvarlighetsgraden bör återspegla verksamhetens påverkan – en saknad målvariabel har hög allvarlighetsgrad, medan en saknad icke-prediktiv kolumn kan ha låg.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
# Auto-generate data quality table
missing_pct = (df.isna().sum() / len(df) * 100).round(1)
quality = missing_pct[missing_pct > 0].to_frame(name='missing_pct')
quality['severity'] = quality['missing_pct'].apply(
lambda x: 'High' if x > 30 else ('Medium' if x > 10 else 'Low')
)
quality['action'] = quality['missing_pct'].apply(
lambda x: 'Drop column' if x > 50 else 'Impute or flag'
)
print(quality.to_string())Generera sammanfattningsfigurer med flera paneler
En sammanfattningsfigur kombinerar flera diagram i en bild som kan bäddas in i en rapport. Använd plt.subplots(rows, cols) för att skapa ett rutnät och tilldela varje viktigt resultat en egen panel. Spara figuren med savefig() och en DPI som passar utdataformatet (150 för skärm, 300 för utskrift). Ge varje panel en tydlig resultatrubrik, till exempel 'Biljettpriserna är högerskevfördelade (skevhet=4.1)', i stället för att bara ange kolumnnamnet.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 1. Fare distribution
sns.histplot(df['fare'], kde=True, bins=30, ax=axes[0][0])
axes[0][0].set_title('Fare is right-skewed (skew=4.1)')
# 2. Survival by class
survival = df.groupby('class')['survived'].mean().reset_index()
sns.barplot(data=survival, x='class',
y='survived', order=['First', 'Second', 'Third'], ax=axes[0][1])
axes[0][1].set_title('Survival Rate Drops by Class')
# 3. Age distribution
sns.histplot(df['age'].dropna(), kde=True, bins=25, ax=axes[1][0], color='coral')
axes[1][0].set_title('Age: Near-Normal, Missing 20%')
# 4. Embarkation counts
sns.countplot(data=df, x='embarked', ax=axes[1][1], palette='Set2')
axes[1][1].set_title('Most Boarded at Southampton')
plt.tight_layout()
plt.savefig('/tmp/eda_summary.png', dpi=150, bbox_inches='tight')
plt.show()
print('Saved: /tmp/eda_summary.png')Skriva resultat som löptext
Varje viktigt resultat bör formuleras som en verksamhetsrelevant mening, inte som en teknisk beskrivning. I stället för 'Kolumnen fare har skevhet=4.1' kan ni skriva 'Biljettpriserna är extremt högerskevfördelade – ett litet antal förstaklasspassagerare betalade mer än 10 gånger medianpriset, vilket kan snedvrida intäktsanalyser som använder genomsnittspriser.' Det är denna översättning från statistisk observation till verksamhetskonsekvens som gör EDA-rapporter värdefulla för icke-tekniska intressenter.
Generera Markdown-rapporter programmatiskt
Ni kan skriva EDA-rapporter som markdown-filer direkt från Python. Skapa en sträng som innehåller markdown-rubriker, punktlistor och inbäddade bildlänkar och skriv den sedan till en .md-fil. Detta tillvägagångssätt skapar reproducerbara rapporter som uppdateras automatiskt när underliggande data ändras, vilket gör dem lämpliga för integrering i utdataartefakter från datapipelines eller Git-arkiv.
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
# Build a simple markdown report
lines = [
'# EDA Summary Report: Titanic Dataset',
'',
'## Overview',
f'- **Rows:** {len(df):,}',
f'- **Columns:** {df.shape[1]}',
f'- **Total Missing Cells:** {df.isna().sum().sum():,}',
'',
'## Key Findings',
'- First-class passengers had a 63% survival rate vs 24% for third class.',
'- Fare is extremely right-skewed (skew=4.1); use log transform before modelling.',
'- Age is missing in 20% of rows — median imputation recommended.',
'',
'## Recommended Next Steps',
'1. Impute age with median grouped by class.',
'2. Drop the cabin column (77% missing).',
'3. Log-transform fare before any regression modelling.',
]
with open('/tmp/eda_report.md', 'w') as f:
f.write('\n'.join(lines))
print('Report written to /tmp/eda_report.md')
print('\n'.join(lines[:10]))Exportera till HTML med Jupyter
Jupyter-anteckningsböcker kan exporteras till HTML eller PDF med jupyter nbconvert --to html notebook.ipynb. Detta bevarar alla diagram, all kod och alla markdown-celler i en enda delbar fil som kan visas utan att Python behöver vara installerat. För en helt automatiserad pipeline kan ni köra anteckningsboken programmatiskt med papermill: papermill input.ipynb output.ipynb -p date '2024-01-01', vilket parameteriserar och kör anteckningsboken som ett skript.
# To export a Jupyter notebook to HTML:
# jupyter nbconvert --to html eda_notebook.ipynb
# To parameterise and run with papermill:
# pip install papermill
# papermill eda_template.ipynb eda_2024.ipynb -p date '2024-01-01' -p min_rows 1000
# The output notebook can then be exported:
# jupyter nbconvert --to html eda_2024.ipynb
print('Jupyter nbconvert and papermill automate report generation.')Strukturera konkreta nästa steg
Avsnittet rekommenderade nästa steg är ofta den mest lästa delen av en EDA-rapport. Strukturera det som en prioriterad checklista: P1 (blockerande) – problem som måste åtgärdas innan någon analys är giltig (t.ex. felaktigt identifierade datatyper), P2 (viktiga) – åtgärder för datarensning som påverkar modellens prestanda avsevärt (t.ex. hantering av avvikare), P3 (bra att ha) – idéer för berikning och ytterligare datakällor att undersöka. Denna struktur gör det enkelt för teamet att fördela arbetet på lämpligt sätt.
Använda pandas-profiling för snabb rapportering
ydata-profiling (pip install ydata-profiling) genererar en omfattande HTML-rapport med ett enda anrop. Rapporten innehåller översiktsstatistik, variabelfördelningar, korrelationer, mönster för saknade värden och identifiering av dubbletter – alla avsnitt i en manuell EDA-rapport. Använd det för snabb utforskning i början av ett projekt och skriv sedan en anpassad sammanfattningsrapport som lyfter fram de mest relevanta resultaten för er specifika verksamhetsfråga.
# pip install ydata-profiling
# from ydata_profiling import ProfileReport
# import seaborn as sns
# df = sns.load_dataset('titanic')
# profile = ProfileReport(df, title='Titanic EDA')
# profile.to_file('titanic_eda.html') # interactive HTML
# profile.to_notebook_iframe() # inline in Jupyter
# Key sections in the generated report:
# - Overview: shape, missing, duplicates
# - Variables: per-column statistics and plots
# - Correlations: Pearson, Spearman, Cramers V
# - Missing values: heatmap and dendrogram
# - Duplicates: full list of duplicate rows
print('ydata-profiling generates full EDA reports with one function call.')Antimönster i EDA-rapporter att undvika
Vanliga antimönster i EDA-rapporter är: att visa varje diagram för varje kolumn (det skapar rapporter på 50 sidor som ingen läser – välj ut de 5–10 viktigaste), att ange fakta utan tolkning ('age har 177 null-värden' – vad bör ni göra åt det?), att inte uppdatera rapporten efter datarensning (rensa data och gör sedan om profileringen för att bekräfta att problemen har lösts) samt att blanda in rensningskod i analysen (håll datarensningen åtskild från EDA-berättelsen).
Snabbkontroll
Testa er förståelse av att skriva EDA-rapporter från den här lektionen.
Sammanfattning av lektionen
I den här lektionen lärde ni er att strukturera EDA-rapporter i sex avsnitt (översikt, kvalitet, fördelningar, korrelationer, insikter om undergrupper och nästa steg), generera sammanfattningsfigurer med flera paneler och markdown-rapporter programmatiskt samt översätta statistiska resultat till verksamhetsrelevant språk. Nästa steg är avancerade indexeringstekniker – att skapa MultiIndex och göra hierarkiska urval i Pandas.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Sammanfatta resultat i en rapport” gratis?
Ja – hela texten till ”Sammanfatta resultat i en rapport” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Pandas & NumPy Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Sammanfatta resultat i en rapport”?
Sammanställ viktiga insikter i en strukturerad markdown-sammanfattning med inbäddade referenser till visualiseringar och konkreta nästa steg. Ni övar på Pandas & NumPy Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Pandas & NumPy Academy?
Du behöver inga förkunskaper. Utbildningen i Pandas & NumPy Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Sammanfatta resultat i en rapport”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Pandas & NumPy Academy-lektionen?
Ja. Varje Pandas & NumPy Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Checklista för datasetprofilering
- Univariat analys
- Bivariat analys och korrelationsanalys
- Sammanfatta resultat i en rapport