Excel- ja JSON-tiedostojen lukeminen
Tuokaa Excel-työkirjoja pd.read_excel-metodilla ja JSON-tietueita pd.read_json-metodilla sekä käsitelkää yleisiä muotovariaatioita.
Excel- ja JSON-tiedostojen lukeminen on ilmainen Pandas & NumPy Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Pandas & NumPy Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Miksi Excel ja JSON ovat tärkeitä
CSV on yleiskäyttöinen tiedostomuoto, mutta Excel-tiedostot (.xlsx/.xls) ovat sähköpostitse ja raportointityökaluilla jaettavan liiketoimintadatan yleisin muoto. JSON on REST-rajapintojen ja NoSQL-tietokantojen natiivi tiedostomuoto. Pandas tarjoaa funktiot pd.read_excel() ja pd.read_json(), joiden rajapinnat vastaavat CSV-lukijan rajapintaa, joten opitut taidot ovat suoraan hyödynnettävissä.
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')Excel-moottorin asentaminen
Excel-tiedostojen lukeminen edellyttää moottoria: openpyxl .xlsx-tiedostoille (uusi muoto) ja xlrd vanhemmille .xls-tiedostoille. Asentakaa moottori komennolla pip install openpyxl. Pandas valitsee moottorin automaattisesti tiedostotunnisteen perusteella. Käyttäkää kirjoittamiseen xlsxwriter-kirjastoa, jos tarvitsette edistynyttä muotoilua. Jos moottoria ei ole asennettu, read_excel() aiheuttaa ModuleNotFoundError-poikkeuksen.
# 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')Taulukon valitseminen sheet_name-parametrilla
Excel-työkirjoissa voi olla useita taulukoita. sheet_name= määrittää luettavan taulukon: välittäkää merkkijono (taulukon nimi), kokonaisluku (nollasta alkava sijainti) tai luettelo, jos haluatte lukea useita taulukoita sanakirjaan. Välittäkää sheet_name=None, jos haluatte lukea kaikki taulukot sanakirjaan, jonka avaimina ovat taulukoiden nimet. Käytettävissä olevien taulukoiden tarkistaminen komennolla pd.ExcelFile('file.xlsx').sheet_names on hyvä lähtökohta.
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']Yleiset Excel-parametrit
pd.read_excel() tukee useimpia samoja parametreja kuin read_csv(): header=, index_col=, usecols=, skiprows=, dtype= ja nrows=. Excel-tiedostoissa usecols hyväksyy lisäksi Excelin sarakealueen merkkijonona, kuten 'A:C' tai 'A,C,E'. Tämä on kätevää, kun sarakekirjaimet tunnetaan taulukon rakenteesta.
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
)JSON-tiedostojen lukeminen: orient-muodot
pd.read_json() lukee JSON-datan DataFrameksi. orient=-parametri määrittää JSON-rakenteen: 'records' (rivisanakirjojen luettelo), 'columns' (saraketaulukoiden sanakirja, oletus), 'index' (indeksin mukaan avaimiksi järjestetty rivisanakirjojen sanakirja) tai 'values' (raakatietotaulukko). Useimmat REST-rajapinnat palauttavat 'records'-muotoa — tarkistakaa aina ensin raaka-JSON, jotta voitte määrittää oikean orient-muodon.
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)JSON-tiedoston tai URL-osoitteen lukeminen
pd.read_json() hyväksyy tiedostopolun, URL-osoitteen tai suoraan JSON-merkkijonon. Jos JSON on syvästi sisäkkäinen (esimerkiksi sisäkkäisiä objekteja sisältävä API-vastaus), käyttäkää sen sijaan pandas.io.json-moduulin json_normalize()-funktiota. Se litistää sisäkkäiset sanakirjat sarakkeiksi, joiden nimet erotetaan pisteillä.
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 -muoto
JSON Lines (NDJSON) tallentaa yhden JSON-objektin riville, mikä helpottaa suurten aineistojen suoratoistokäsittelyä. Käyttäkää muodon jäsentämiseen pd.read_json('file.jsonl', lines=True). Muotoa käytetään yleisesti lokitiedostoissa, Kafka-vienneissä ja koneoppimisen aineistomuodoissa. Jokaisen rivin on oltava kelvollinen JSON-objekti; virheelliset rivit aiheuttavat luvun epäonnistumisen.
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)Päivämäärien jäsentäminen JSON-tiedostoissa
JSON-muodossa ei ole natiivia päivämäärätyyppiä — päivämäärät tallennetaan merkkijonoina tai Unix-aikaleimoina (millisekunteina tai sekunteina epookista). Asetuksella convert_dates=True (oletus) Pandas yrittää muuntaa automaattisesti sarakkeet, joiden nimissä esiintyy 'date', 'time' tai 'at'. Muuntakaa mukautetut sarakenimet tai aikaleimat eksplisiittisesti komennolla 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]Excelin ja JSONin sudenkuoppien vertailu
Excelin sudenkuopat: yhdistetyt solut tuottavat NaN-rivejä, piilotetut rivit ja sarakkeet sisältyvät tulokseen, ja lukujen muotoilu (esimerkiksi kelluvina lukuina tallennetut päivämäärät) on korjattava lataamisen jälkeen. JSONin sudenkuopat: kenttien epäyhtenäinen esiintyminen tietueissa tuottaa NaN-arvoja, ja JSON-objektin kokonaislukuavaimista tulee merkkijonomuotoisia sarakenimiä.
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 useille taulukoille
Kun samasta tiedostosta on luettava tehokkaasti useita taulukoita, avatkaa pd.ExcelFile-kontekstinhallinta ja kutsukaa parse(sheet_name)-funktiota kullekin taulukolle. Näin tiedostoa ei tarvitse avata ja jäsentää uudelleen jokaista taulukkoa varten — tämä on tärkeää suurten työkirjojen kanssa. Kontekstinhallinta sulkee tiedostokahvan automaattisesti.
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)requests-kirjaston käyttäminen JSON-rajapintojen lataamiseen
REST-rajapintojen datan käsittelyssä käyttäkää requests-kirjastoa JSON-datan hakemiseen ja välittäkää jäsennetty Python-objekti funktiolle pd.DataFrame() tai pd.json_normalize(). Tämä malli erottaa HTTP-käsittelyn datan jäsentämisestä ja antaa käyttöön otsakkeet, todennuksen ja sivutuksen ennen kuin Pandas käsittelee dataa.
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())Pikatarkistus
Testatkaa tässä oppitunnissa oppimanne Excel- ja JSON-tiedostojen lukemisesta Pandasilla.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että pd.read_excel() lukee xlsx-tiedostoja ja mahdollistaa ladattavan taulukon määrittämisen sheet_name-parametrilla, pd.read_json() käsittelee useita JSON-rakenteita, joita hallitaan orient-parametrilla ja json_normalize() litistää sisäkkäiset JSON-objektit tasaiseksi DataFrameksi. Seuraavaksi viemme DataFrameja CSV- ja Excel-tiedostoihin jakamista ja jatkokäsittelyä varten.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Excel- ja JSON-tiedostojen lukeminen” ilmainen?
Kyllä – oppitunnin ”Excel- ja JSON-tiedostojen lukeminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Pandas & NumPy Academy-kurssin, päivitä CoddyKit PROhon. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Excel- ja JSON-tiedostojen lukeminen”?
Tuokaa Excel-työkirjoja pd.read_excel-metodilla ja JSON-tietueita pd.read_json-metodilla sekä käsitelkää yleisiä muotovariaatioita. Harjoittelet Pandas & NumPy Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Pandas & NumPy Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Pandas & NumPy Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Excel- ja JSON-tiedostojen lukeminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Pandas & NumPy Academy-oppitunnilla?
Kyllä. Jokainen Pandas & NumPy Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- CSV-tiedostojen lukeminen
- Excel- ja JSON-tiedostojen lukeminen
- DataFrame-olioiden kirjoittaminen tiedostoihin
- URL-osoitteista ja StringIO:sta lukeminen