Pandas & NumPy Academy · Oppitunti

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.

Oppitunti 2/413 vaihetta

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.

Aloita maksutta

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

  1. CSV-tiedostojen lukeminen
  2. Excel- ja JSON-tiedostojen lukeminen
  3. DataFrame-olioiden kirjoittaminen tiedostoihin
  4. URL-osoitteista ja StringIO:sta lukeminen
← Takaisin: Pandas & NumPy Academy