Õppige Pandas DataFrame'i loomise kunsti. See juhend hõlmab DataFrame'ide initsialiseerimist sõnastikest, loenditest, NumPy massiividest ja muust andmespetsialistidele.
Pandas DataFrame'i loomine: sĂĽvauurimine andmestruktuuride initsialiseerimisse
Tere tulemast Pythoniga andmetöötluse maailma! Peaaegu iga andmeanalüüsi ülesande keskmes on Pandas teek ja selle nurgakiviks on DataFrame. Mõelge DataFrame'ile kui nutikale, võimsale ja paindlikule versioonile arvutustabelist või andmebaasi tabelist, mis asub otse teie Pythoni keskkonnas. See on peamine tööriist andmete puhastamiseks, teisendamiseks, analüüsimiseks ja visualiseerimiseks. Kuid enne, kui saate andmetega imet teha, peate kõigepealt valdama DataFrame'i loomise kunsti. Kuidas te seda põhilist andmestruktuuri initsialiseerite, võib panna aluse kogu teie analüüsile.
See põhjalik juhend on mõeldud andmeanalüütikutele, teadlastele ja inseneridele üle kogu maailma. Me uurime kõige levinumaid ja võimsamaid meetodeid Pandas DataFrame'ide loomiseks nullist. Olenemata sellest, kas teie andmed on sõnastikus, loendis, NumPy massiivis või muus vormingus, pakub see artikkel teile teadmisi ja praktilisi näiteid DataFrame'ide enesekindlalt ja tõhusalt initsialiseerimiseks. Ehitame oma vundamendi.
Mis täpselt on Pandas DataFrame?
Enne ehitamise alustamist selgitame, mida me konstrueerime. Pandas DataFrame on kahemõõtmeline, suurust muutev ja potentsiaalselt heterogeenne tabelandmete struktuur. Jaotame selle:
- Kahemõõtmeline: Sellel on read ja veerud, nagu arvutustabelil.
- Suurust muutev: Saate lisada või eemaldada ridu ja veerge pärast DataFrame'i loomist.
- Heterogeenne: Veergudel võivad olla erinevad andmetüübid. Näiteks võib üks veerg sisaldada numbreid (täisarvud või ujukomaarvud), teine ​​võib sisaldada teksti (stringid) ja kolmas võib sisaldada kuupäevi või loogilisi väärtusi (True/False).
DataFrame'il on kolm peamist komponenti:
- Andmed: Tegelikud väärtused, mis sisalduvad struktuuris, korraldatud ridadesse ja veergudesse.
- Register: Ridade sildid. Kui te ei anna indeksit, loob Pandas vaikimisi ühe, alustades 0-st. Register pakub võimsa viisi andmetele juurdepääsuks ja nende joondamiseks.
- Veerud: Veergude sildid. Need on üliolulised konkreetsetele andmesarjadele DataFrame'is juurdepääsuks.
Selle struktuuri mõistmine on võti DataFrame'ide tõhusaks loomiseks ja manipuleerimiseks.
Vundament: Pandase importimine
Kõigepealt. Pandase kasutamiseks peate teegi importima oma Pythoni skripti või märkmikku. Ülemaailmselt aktsepteeritud tava on importida see aliasega pd. See lihtne alias muudab teie koodi loetavamaks ja lühemaks.
import pandas as pd
import numpy as np # Sageli kasutatakse koos Pandas'ega, seega impordime ka selle.
Selle ühe reaga olete avanud Pandase teegi kogu jõu. Nüüd jõuame selle juhendi tuumani: DataFrame'ide loomine.
Põhilised loomismeetodid: lihtsast keerukani
Konstruktor pd.DataFrame() on uskumatult mitmekülgne. See võib vastu võtta palju erinevaid sisendeid. Nüüd uurime kõige olulisemaid meetodeid, liikudes kõige levinumatest spetsialiseeritumate juhtumiteni.
1. DataFrame'i loomine loendite või massiivide sõnastikust
See on vaieldamatult kõige levinum ja intuitiivsem meetod DataFrame'i loomiseks. Alustate Pythoni sõnastikuga, kus võtmed saavad veergude nimedeks ja väärtused on loendid (või NumPy massiivid või Pandas Series), mis sisaldavad iga veeru andmeid.
Kuidas see töötab: Pandas kaardistab iga sõnastiku võtme veerupäisele ja iga väärtuste loendi selle veeru ridadele. Kriitiline nõue siin on see, et kõik loendid peavad olema sama pikad, kuna iga loend tähistab täielikku andmeveergu.
Näide:
Loome DataFrame'i, mis sisaldab teavet erinevate linnade kohta ĂĽle maailma.
# Andmed on korraldatud veergude kaupa
city_data = {
'City': ['Tokyo', 'Delhi', 'Shanghai', 'SĂŁo Paulo', 'Mumbai'],
'Country': ['Jaapan', 'India', 'Hiina', 'Brasiilia', 'India'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
# Loo DataFrame
df_from_dict = pd.DataFrame(city_data)
print(df_from_dict)
Väljund:
City Country Population_Millions Is_Coastal
0 Tokyo Japan 37.3 True
1 Delhi India 32.0 False
2 Shanghai China 28.5 True
3 SĂŁo Paulo Brazil 22.4 False
4 Mumbai India 20.9 True
Põhiline järeldus: See meetod on ideaalne, kui teie andmed on loomulikult korraldatud funktsiooni või kategooria järgi. See on puhas, loetav ja tõlgib otse teie sõnastiku struktuuri tabelformaati.
2. DataFrame'i loomine sõnastike loendist
Alternatiivne ja sama võimas meetod on kasutada loendit, kus iga element on sõnastik. Selles struktuuris tähistab iga sõnastik ühte rida ja selle võtmed tähistavad selle rea andmete veerunimesid.
Kuidas see töötab: Pandas itereerib läbi loendi. Iga sõnastiku jaoks loob see uue rea. Sõnastiku võtmeid kasutatakse veergude määramiseks. See meetod on uskumatult paindlik, sest kui sõnastikust puudub võti, täidab Pandas automaatselt selle lahtri vastavas reas NaN-ga (Not a Number), mis on Pandase standardne marker puuduvate andmete jaoks.
Näide:
Esitame samu linnaandmeid, kuid seekord struktureeritud kirjete loendina.
# Andmed on korraldatud ridade (kirjete) kaupa
records_data = [
{'City': 'Tokyo', 'Country': 'Japan', 'Population_Millions': 37.3, 'Is_Coastal': True},
{'City': 'Delhi', 'Country': 'India', 'Population_Millions': 32.0, 'Is_Coastal': False},
{'City': 'Shanghai', 'Country': 'China', 'Population_Millions': 28.5},
{'City': 'SĂŁo Paulo', 'Country': 'Brazil', 'Population_Millions': 22.4, 'Is_Coastal': False},
{'City': 'Cairo', 'Country': 'Egypt', 'Timezone': 'EET'} # Pange tähele erinevat struktuuri
]
# Loo DataFrame
df_from_list_of_dicts = pd.DataFrame(records_data)
print(df_from_list_of_dicts)
Väljund:
City Country Population_Millions Is_Coastal Timezone
0 Tokyo Japan 37.3 True NaN
1 Delhi India 32.0 False NaN
2 Shanghai China 28.5 NaN NaN
3 SĂŁo Paulo Brazil 22.4 False NaN
4 Cairo Egypt NaN NaN EET
Pange tähele, kuidas Pandas inkonsistentsustega graatsiliselt hakkama sai. Shanghai "Is_Coastal" väärtus on NaN, kuna see puudus selle sõnastikust. Kairo jaoks loodi uus veerg "Timezone" ja kõigi teiste linnade jaoks NaN. See muudab selle suurepäraseks valikuks poolstruktureeritud andmetega töötamiseks, nagu JSON-vastused API-dest.
Põhiline järeldus: Kasutage seda meetodit, kui teie andmed on esitatud kirjete või vaatluste seeriana. See on tugev puuduvate andmete ja kirjete struktuuri variatsioonide käsitlemisel.
3. DataFrame'i loomine NumPy massiivist
Neile, kes töötavad teadusliku arvutamise, masinõppe või mis tahes valdkonnas, mis hõlmab tugevaid arvulisi operatsioone, pärinevad andmed sageli NumPy massiividest. Pandas on ehitatud NumPy peale, muutes kahe vahelise integratsiooni sujuvaks ja väga tõhusaks.
Kuidas see töötab: Te edastate konstruktorile pd.DataFrame() 2D NumPy massiivi. Vaikimisi loob Pandas täisarvupõhised indeksid ja veerud. Siiski saate (ja peaksite) esitama tähendusrikkaid silte, kasutades parameetreid index ja columns.
Näide:
Loome DataFrame'i juhuslikult genereeritud 5x4 NumPy massiivist, mis tähistab andurite näitu aja jooksul.
# Loo 5x4 NumPy massiiv juhuslike andmetega
data_np = np.random.rand(5, 4)
# Määratle veeru- ja indeksisildid
columns = ['Sensor_A', 'Sensor_B', 'Sensor_C', 'Sensor_D']
index = pd.to_datetime(['2023-10-27 10:00', '2023-10-27 10:01', '2023-10-27 10:02', '2023-10-27 10:03', '2023-10-27 10:04'])
# Loo DataFrame
df_from_numpy = pd.DataFrame(data=data_np, index=index, columns=columns)
print(df_from_numpy)
Väljund (teie juhuslikud numbrid erinevad):
Sensor_A Sensor_B Sensor_C Sensor_D
2023-10-27 10:00:00 0.123456 0.987654 0.555555 0.111111
2023-10-27 10:01:00 0.234567 0.876543 0.666666 0.222222
2023-10-27 10:02:00 0.345678 0.765432 0.777777 0.333333
2023-10-27 10:03:00 0.456789 0.654321 0.888888 0.444444
2023-10-27 10:04:00 0.567890 0.543210 0.999999 0.555555
Selles näites tutvustasime ka võimsat funktsiooni: ajasarja andmete jaoks DatetimeIndex-i kasutamine, mis avab Pandases tohutult palju ajapõhiseid analüüsivõimalusi.
Põhiline järeldus: See on kõige mälu-tõhusam meetod DataFrame'i loomiseks homogeensetest numbrilistest andmetest. See on standardne valik, kui liidestutakse teekidega nagu NumPy, Scikit-learn või TensorFlow.
4. DataFrame'i loomine loendite loendist
See meetod on kontseptuaalselt sarnane NumPy massiivist loomisega, kuid kasutab standardseid Pythoni loendeid. See on lihtne viis tabelandmete teisendamiseks pesastatud loendi vormingusse.
Kuidas see töötab: Esitate loendi, kus iga sisemine loend tähistab andmerida. Nagu NumPy massiivide puhul, on selguse huvides väga soovitatav määrata veerunimed parameetri columns kaudu.
Näide:
# Andmed ridade loendina
product_data = [
['P001', 'SĂĽlearvuti', 1200.00, 'Elektroonika'],
['P002', 'Hiir', 25.50, 'Elektroonika'],
['P003', 'Kontoritool', 150.75, 'Mööbel'],
['P004', 'Klaviatuur', 75.00, 'Elektroonika']
]
# Määratle veerunimed
column_names = ['TooteID', 'TooteNimi', 'Hind_USD', 'Kategooria']
# Loo DataFrame
df_from_list_of_lists = pd.DataFrame(product_data, columns=column_names)
print(df_from_list_of_lists)
Väljund:
ProductID ProductName Price_USD Category 0 P001 Laptop 1200.00 Electronics 1 P002 Mouse 25.50 Electronics 2 P003 Desk Chair 150.75 Furniture 3 P004 Keyboard 75.00 Electronics
Põhiline järeldus: See on lihtne ja tõhus meetod, kui teie andmed on juba struktureeritud ridade loendina, näiteks kui loete failivormingust, millel pole päiseid.
Täpsem initsialiseerimine: DataFrame'i kohandamine
Lisaks toorandmete esitamisele pakub konstruktor pd.DataFrame() mitmeid parameetreid, et juhtida teie uue DataFrame'i struktuuri ja omadusi selle loomise hetkest.
Indeksi määramine
Me oleme juba näinud parameetrit `index` tegevuses. Register on DataFrame'i oluline osa, pakkudes ridadele silte, mida kasutatakse kiireteks otsinguteks, andmete joondamiseks ja muuks. Kuigi Pandas pakub vaikimisi numbrilist indeksit (0, 1, 2, ...), võib tähendusrikka indeksi seadmine muuta teie andmetega töötamise palju lihtsamaks.
Näide: Kasutame uuesti oma loendite sõnastiku näidet, kuid seadke loomisel veerg `City` indeksiks.
city_data = {
'Country': ['Jaapan', 'India', 'Hiina', 'Brasiilia', 'India'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
city_names = ['Tokyo', 'Delhi', 'Shanghai', 'SĂŁo Paulo', 'Mumbai']
# Loo DataFrame kohandatud indeksiga
df_with_index = pd.DataFrame(city_data, index=city_names)
print(df_with_index)
Väljund:
Country Population_Millions Is_Coastal
Tokyo Japan 37.3 True
Delhi India 32.0 False
Shanghai China 28.5 True
SĂŁo Paulo Brazil 22.4 False
Mumbai India 20.9 True
Nüüd pääsete reaandmetele juurde, kasutades neid tähendusrikkaid silte, näiteks df_with_index.loc['Tokyo'].
AndmetĂĽĂĽpide juhtimine (`dtype`)
Pandas oskab üsna hästi andmetüüpe järeldada (nt numbrid, tekst ja loogilised väärtused). Mõnikord peate aga veeru jaoks jõustama konkreetse andmetüübi, et tagada mälu tõhusus või võimaldada konkreetseid toiminguid. Parameeter `dtype` annab teile selle kontrolli.
Näide: Kujutage ette, et meil on toote ID-d, mis näevad välja nagu numbrid, kuid mida tuleks käsitleda tekstina (stringid).
data = {
'ProductID': [101, 102, 103],
'Stock': [50, 75, 0]
}
# Loo DataFrame, määrates 'ProductID' jaoks dtype
df_types = pd.DataFrame(data, dtype={'ProductID': str, 'Stock': 'int32'})
print(df_types.dtypes)
Väljund:
ProductID object Stock int32 dtype: object
Pange tähele, et `str` on Pandases esindatud kui `object`. Määrates selgesõnaliselt `dtype`, hoiame ära, et Pandas kohtleks `ProductID` kui numbrit, mis võib viia valede arvutuste või sortimisprobleemideni hiljem. Konkreetsemate täisarvutüüpide, nagu `int32`, kasutamine vaikeväärtuse `int64` asemel võib säästa ka suurte andmekogumite puhul märkimisväärset mälu.
Praktilised stsenaariumid ja parimad tavad
Õige loomismeetodi valimine sõltub teie andmete algsest vormingust. Siin on lihtne otsustusjuhend:
- Kas teie andmed on veergudes (nt üks loend funktsiooni kohta)? Kasutage loendite sõnastikku. See sobib loomulikult.
- Kas teie andmed on kirjete seeria (nt JSON API-st)? Kasutage sõnastike loendit. See on suurepärane kirjete puuduvate või täiendavate väljade käsitlemisel.
- Kas teie andmed on arvulised ja ruudustikus (nt teaduslikust arvutusest)? Kasutage NumPy massiivi. See on selle kasutusjuhtumi jaoks kõige suurema jõudlusega variant.
- Kas teie andmed on lihtsas reahaaval tabelivormingus ilma päisteta? Kasutage loendite loendit ja esitage veerunimed eraldi.
Levinumad lõksud, mida vältida
- Ebavõrdsed pikkused loendite sõnastikus: See on tavaline viga. DataFrame'i loomisel loendite sõnastikust peab igal loendil olema täpselt sama arv elemente. Kui ei, siis Pandas tõstab esile `ValueError`. Enne loomist veenduge alati, et teie veeru andmed on võrdse pikkusega.
- Indeksi ignoreerimine: Vaikeväärtuse 0-põhise indeksi kasutamine on paljudel juhtudel hea, kuid kui teie andmetel on loomulik identifikaator (nagu toote ID, kasutaja ID või konkreetne ajatempel), võib selle seadmine algusest peale indeksiks hiljem teie koodi lihtsustada.
- Andmetüüpide unustamine: Kui lasete Pandasel tüüpe järeldada, töötab see enamasti, kuid suurte andmekogumite või segatüüpi veergude puhul võib jõudlus kannatada. Olge ennetav, määrates veergude jaoks `dtype`, mida tuleb käsitleda kategooriatena, stringidena või konkreetsete arvuliste tüüpidena, et säästa mälu ja vältida vigu.
Lisaks initsialiseerimisele: DataFrame'ide loomine failidest
Kuigi see juhend keskendub DataFrame'ide loomisele Pythoni mälus olevatest objektidest, on oluline teada, et enamikus reaalse maailma stsenaariumides pärinevad teie andmed välisest failist. Pandas pakub selleks otstarbeks komplekti kõrgelt optimeeritud lugejafunktsioone, sealhulgas:
pd.read_csv(): komaga eraldatud väärtuste failide jaoks, andmete impordi põhivahend.pd.read_excel(): andmete lugemiseks Microsoft Exceli arvutustabelitest.pd.read_json(): andmete lugemiseks JSON-failidest või stringidest.pd.read_sql(): andmebaasipäringu tulemuste lugemiseks otse DataFrame'i.pd.read_parquet(): lugemiseks tõhusast veergudele orienteeritud Parquet failivormingust.
Need funktsioonid on teie Pandase teekonna järgmine loogiline samm. Nende valdamine võimaldab teil alla laadida andmeid praktiliselt igast allikast võimsasse DataFrame'i struktuuri.
Järeldus: Teie alus andmete valdamiseks
Pandas DataFrame on keskne andmestruktuur igas tõsises andmetöös Pythonis. Nagu me oleme näinud, pakub Pandas paindlikku ja intuitiivset tööriistade komplekti nende struktuuride initsialiseerimiseks mitmesugustes vormingutes. Mõistes, kuidas luua DataFrame'i sõnastikest, loenditest ja NumPy massiividest, olete loonud kindla aluse oma andmeanalüüsi projektidele.
Võti on valida meetod, mis vastab kõige paremini teie andmete algsele struktuurile. See mitte ainult ei muuda teie koodi puhtamaks ja loetavamaks, vaid ka tõhusamaks. Siit olete valmis liikuma edasi andmete puhastamise, uurimise, teisendamise ja visualiseerimise põnevate ülesannete juurde. Head kodeerimist!