Läsa Excel- och JSON-filer
Importera Excel-arbetsböcker med pd.read_excel och JSON-poster med pd.read_json och hantera vanliga formatvariationer.
Läsa Excel- och JSON-filer är en gratis lektion i Pandas & NumPy Academy på CoddyKit. Detta är lektion 2 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 Excel och JSON är viktiga
CSV är visserligen det universella formatet, men Excel-filer (.xlsx/.xls) är det vanligaste formatet för affärsdata som delas via e-post och rapportverktyg. JSON är det ursprungliga formatet för REST-API:er och NoSQL-databaser. Pandas tillhandahåller pd.read_excel() och pd.read_json(), som följer samma API-principer som CSV-läsaren, så kunskaperna kan överföras direkt.
import pandas as pd
# The three most common load functions share the same philosophy
df_csv = pd.read_csv('data.csv')
df_excel = pd.read_excel('data.xlsx')
df_json = pd.read_json('data.json')Installera Excel-motorn
För att läsa Excel-filer krävs en motor: openpyxl för .xlsx-filer (modernt format) och xlrd för äldre .xls-filer. Installera med pip install openpyxl. Pandas väljer automatiskt motor utifrån filändelsen. För skrivning använder Ni xlsxwriter när avancerad formatering behövs. Om motorn inte är installerad utlöser read_excel() ett ModuleNotFoundError.
# Install the required engine:
# pip install openpyxl # for .xlsx (modern)
# pip install xlrd==1.2.0 # for .xls (legacy)
import pandas as pd
df = pd.read_excel('report.xlsx', engine='openpyxl')Välja ett kalkylblad med sheet_name
Excel-arbetsböcker kan innehålla flera kalkylblad. sheet_name= anger vilket som ska läsas: skicka med en sträng (kalkylbladets namn), ett heltal (position med nollbaserat index) eller en lista för att läsa flera kalkylblad till en dict. Skicka med sheet_name=None för att läsa in alla kalkylblad till en dict med kalkylbladsnamnen som nycklar. Ett bra första steg är att undersöka tillgängliga kalkylblad med pd.ExcelFile('file.xlsx').sheet_names.
import pandas as pd
# Read the second sheet
df = pd.read_excel('workbook.xlsx', sheet_name=1)
# Read by name
df = pd.read_excel('workbook.xlsx', sheet_name='Sales')
# Inspect available sheets
xl = pd.ExcelFile('workbook.xlsx')
print(xl.sheet_names) # ['Summary', 'Sales', 'Costs']Vanliga Excel-parametrar
pd.read_excel() stöder de flesta av samma parametrar som read_csv(): header=, index_col=, usecols=, skiprows=, dtype= och nrows=. För Excel accepterar usecols även en sträng med ett intervall av Excel-kolumner, till exempel 'A:C' eller 'A,C,E'. Det är praktiskt när kolumnbokstäverna är kända från kalkylbladets layout.
import pandas as pd
df = pd.read_excel(
'sales_report.xlsx',
sheet_name='Q1',
header=2, # header is on row 3 (0-indexed)
usecols='A:D', # Excel column range
skiprows=[3, 4], # skip rows 4 and 5
nrows=100
)Läsa JSON: orienteringsformat
pd.read_json() läser in JSON till en DataFrame. Parametern orient= anger JSON-strukturen: 'records' (en lista med dictar för rader), 'columns' (en dict med arrayer för kolumner, standardvärdet), 'index' (en dict med rad-dictar som indexnycklar) eller 'values' (en rå array). De flesta REST-API:er returnerar formatet 'records' – inspektera alltid den råa JSON-datan först för att avgöra rätt orientering.
import pandas as pd
# REST API response: list of records
json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
df = pd.read_json(json_str, orient='records')
print(df)Läsa JSON från en fil eller URL
pd.read_json() accepterar en filsökväg, en URL eller en JSON-sträng direkt. För djupt nästlad JSON (till exempel API-svar med nästlade objekt) använder Ni i stället json_normalize() från modulen pandas.io.json. Den plattar ut nästlade dictar till kolumner med punktseparerade namn.
import pandas as pd
from pandas.io.json import json_normalize
# From a file
df = pd.read_json('events.json')
# Flatten nested JSON
nested = [{'id': 1, 'user': {'name': 'A', 'age': 30}},
{'id': 2, 'user': {'name': 'B', 'age': 25}}]
df_flat = json_normalize(nested)
print(df_flat.columns.tolist()) # ['id', 'user.name', 'user.age']JSON Lines-format
JSON Lines (NDJSON) lagrar ett JSON-objekt per rad, vilket gör det enkelt att strömma stora datamängder. Använd pd.read_json('file.jsonl', lines=True) för att tolka formatet. Det är vanligt i loggfiler, Kafka-exporter och format för maskininlärningsdataset. Varje rad måste vara ett giltigt JSON-objekt; felaktiga rader gör att läsningen misslyckas.
import pandas as pd
# file.jsonl contains one JSON record per line:
# {"id": 1, "event": "click"}
# {"id": 2, "event": "view"}
df = pd.read_json('events.jsonl', lines=True)
print(df)Hantera datumtolkning i JSON
JSON har ingen inbyggd datatyp för datum – datum lagras som strängar eller Unix-tidsstämplar (millisekunder eller sekunder sedan epoken). Ange convert_dates=True (standardvärdet) för att låta Pandas försöka konvertera kolumner automatiskt när deras namn innehåller 'date', 'time' eller 'at'. För anpassade kolumnnamn eller tidsstämplar konverterar Ni uttryckligen med pd.to_datetime(df['col'], unit='ms').
import pandas as pd
# Unix milliseconds timestamp column
df = pd.read_json('events.json', orient='records')
df['created_at'] = pd.to_datetime(df['created_at'], unit='ms')
print(df['created_at'].dtype) # datetime64[ns]Jämförelse av fallgropar i Excel och JSON
Fallgropar i Excel: sammanslagna celler skapar NaN-rader, dolda rader/kolumner inkluderas i resultatet och talformatering (till exempel datum som lagras som flyttal) måste korrigeras efter inläsningen. Fallgropar i JSON: inkonsekvent förekomst av fält mellan poster skapar NaN, och heltalsnycklar i ett JSON-objekt blir strängar som kolumnnamn.
import pandas as pd
# Excel date stored as float (Excel serial date)
df = pd.read_excel('old_report.xls')
# If dates appear as floats (e.g., 44927.0), convert:
# from xlrd import xldate_as_datetime
# df['date'] = df['date'].apply(lambda x: xldate_as_datetime(x, 0))pd.ExcelFile för flera kalkylblad
När Ni behöver läsa flera kalkylblad från samma fil effektivt öppnar Ni en kontexthanterare för pd.ExcelFile och anropar parse(sheet_name) för varje kalkylblad. Det förhindrar att filen öppnas och tolkas på nytt för varje kalkylblad – något som är viktigt för stora arbetsböcker. Kontexthanteraren stänger automatiskt filhandtaget.
import pandas as pd
with pd.ExcelFile('annual_report.xlsx') as xf:
df_q1 = xf.parse('Q1')
df_q2 = xf.parse('Q2')
print(df_q1.shape, df_q2.shape)Använda requests för att läsa in JSON-API:er
För data från REST-API:er använder Ni biblioteket requests för att hämta JSON och skickar det tolkade Python-objektet till pd.DataFrame() eller pd.json_normalize(). Detta mönster skiljer HTTP-hanteringen från datatolkningen och ger Er tillgång till headers, autentisering och paginering innan Pandas bearbetar datan.
import pandas as pd
import requests
response = requests.get('https://api.example.com/records')
data = response.json() # Python list of dicts
df = pd.DataFrame(data)
print(df.head())Snabb kontroll
Testa Era kunskaper om hur man läser Excel- och JSON-filer med Pandas utifrån den här lektionen.
Sammanfattning av lektionen
I den här lektionen har Ni lärt Er att pd.read_excel() läser xlsx-filer och låter Er ange vilket kalkylblad som ska läsas in med sheet_name, att pd.read_json() hanterar flera JSON-strukturer som styrs av parametern orient och att json_normalize() plattar ut nästlade JSON-objekt till en platt DataFrame. Härnäst exporterar vi DataFrames till CSV- och Excel-filer för delning och vidare bearbetning.
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 ”Läsa Excel- och JSON-filer” gratis?
Ja – hela texten till ”Läsa Excel- och JSON-filer” 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 ”Läsa Excel- och JSON-filer”?
Importera Excel-arbetsböcker med pd.read_excel och JSON-poster med pd.read_json och hantera vanliga formatvariationer. 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 2 av 4.
Hur lång tid tar lektionen ”Läsa Excel- och JSON-filer”?
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
- Läsa CSV-filer
- Läsa Excel- och JSON-filer
- Skriva DataFrames till filer
- Läsa från URL:er och StringIO