Telepítse a műhelyhez szükséges csomagokat

A leckéhez szükséges programok telepítéséhez kövesse a Telepítési dokumentum utasításait. Ha problémákat talál, kérjük, hozzon létre egy probléma a címkével Magas prioritás.

A létesítmények ellenőrzése

A _includes/scripts könyvtárban található egy forgatókönyv nevű check_env.py. Ellenőrzi az Anaconda telepített verziójának működését.

Alapértelmezés szerint a Data Carpentry nem követeli meg az emberektől, hogy töltsék le a teljes lerakatot az összes szkript és csonk mellett. Ezért oktatóként el kell döntenie, hogyan szeretné átadni ezt a szkriptet a hallgatóknak, ha úgy dönt. Használatához a hallgatók navigálhatják termináljukat a _includes/szkriptekhez, és futtathatják a következőket:

Ha a hallgatók AssertionError-t kapnak, az tájékoztatja Önt arról, hogyan segíthet a telepítés kijavításában. Ellenkező esetben elmondja, hogy a rendszer készen áll a Data Carpentry használatára!

01-short-Introduction-to-Python

Kihívások a tincsekkel kapcsolatban

Mi történik, ha a_tuple [2] = 5 futtat ?

Mivel a tuple változhatatlan, nem támogatja az elem hozzárendelését. A listaelemek egyedileg módosíthatók.

Mit mond a type (a_tuple) az a_tuple-ről ?

Szótár kihívások

  • Szótárak módosítása: 2. Jelölje ki újra a második értéket.

Feltétlenül tisztázza azt is, hogy a "második érték" elérése a kulcs nevéről szól. Adjon például rev [10] = "tíz" -t annak tisztázására, hogy nem a pozícióról van szó.

02-kezdve-adatokkal

Megjegyzés a hibákról

Pandas surveys_df ['weight']. A Describe () hibát adhat vissza futás közben.

Kihívások a DataFrame-ekkel kapcsolatban

Oszlopnevek. (Opcionális: display surveys_df.columns [4] = "plotid". Az index nem változtatható; az előző epizódhoz hasonlít. A név adaptálását az átnevezési függvény végzi: surveys_df.rename (oszlop =))

felmérések_df.head (). Továbbá, mit jelent a surveys_df.head (15) ?

Mutassa meg az első 5 sort. Mutassa meg az első 15 sort.

Mutassa meg az utolsó 15 sort.

felmérések_df.alakja. Vegye figyelembe az alakzat kimenetét - Milyen formátumú az attribútum kimenete, amely visszaadja a DataFrame alakját?

Kihívások a statisztikai adatok kiszámításával kapcsolatban

Hozzon létre egy listát a plot_id webhelyazonosítókról, amelyek szerepelnek a felmérések_felmérés adatai között. Hívjuk ezt a listát site_names néven. Hány hely van az adatokban? Hány faj van az adatokban?

plot_names = pd.unique (felmérések_df ["plot_id"]). A webhely-azonosítók száma: plot_names.size vagy len (plot_names). Fajok száma az adatokban: len (pd.unique (Survey_df ["faj"]))

Mi a különbség a len (plot_names) és a surveys_df ['plot_id'] között. Nunique () ?

Mindkettő ugyanazt a kimenetet eredményezi, amely az egyedi értékek megszerzésének alternatív módjaként szolgál. az apáca ötvözi a számlálást az egyedi értékek kinyerésével.

Klaszter kihívások

Hány megfigyelés nő F és hány férfi M ?

Mi történik, ha két oszlopot csoportosít a következő utasítás segítségével, majd felveszi az átlagértékeket?

Az átlagérték kiszámításra kerül a plot_id és a sex minden egyes kombinációjára. Ne feledje, hogy az átlagnak nincs értelme minden változónál, ezért oszloponként adhatja meg: ha például meg szeretné tudni az utolsó regisztrált évet, akkor a lábak hosszának mediánját és az egyes kombinációk súlyának átlagértékét cselekmény és nem:

  • Kiszámítja az egyes plot_id súlysúlyának leíró statisztikáit .

Milyen más módon lehet létrehozni a fajok listáját és társítani azt az adatminták számlálásának számával?

Ahelyett, hogy a kapott csoportból lekérné, majd megszámolná az eredményül kapott oszlopokat, a groupby-val együtt is számolhat (az összes oszlopon), és az így kapott DataFrame-ből összeállíthatja a kijelölést: surveys_df.groupby ('species_id'). Count () ["record_id"]

Grafikai kihívások

  • Készítsen grafikont a faj átlagos súlyáról telephelyenként.

adatok

  • Hozzon létre egy grafikont az összes hím és a teljes nőstény teljes adatkészletéről.

03-index-szelet-részhalmaz

Tipp: Használja a .head () metódust ebben a leckében a képernyő tisztántartása érdekében. Arra ösztönözze a tanulókat, hogy teszteljék a .head () nélküli és anélküli parancsokat, hogy megerősítsék az eszköz hasznosságát, majd preferenciáiktól függően használják vagy sem. Például, ha egy hallgató aggodalmát fejezi ki a gépeléssel való lépést illetően, közölje vele, hogy elkerülheti a .head () -t, de arra fogja használni, hogy több korábbi kódsor látható maradjon.

Kihívások az indexeléssel kapcsolatban

Milyen értéket ad vissza a következő kód? ide: [0]

1, mivel a Python a 0 elemmel kezdődik (Matlab felhasználók számára: ez más!)

Milyen értéket hoz ez vissza? 5-ig]

A fenti példában az [5] hívása hibát eredményez. Miért?

A lista nem tartalmaz 5 indexű elemeket (0-ról 4-re halad).

Mit szólsz ehhez? a [len (a)]

Kihívások a ranglétrán

Mi történik, ha a következő kódot futtatja?

surveys_df [0: 1] csak az első elemet választja ki
surveys_df [: 4] az első tétel kiválasztása feleslegessé teszi a 0 írását
surveys_df [-1:] visszaszámolhat

Tipp: Kiválaszthatja az összes N. sorot is: felmérések_df [1: 10: 2]. Tehát hogyan értelmezi a surveys_df [: - 1] ?

Mi történik, ha ezt futtatja: surveys_df.iloc [0: 4, 1: 4] és surveys_df.loc [0: 4, 1: 4]? Milyen különbséget lát a közvetlenül megelőző parancsok eredményei között?

Ellenőrizze a pozíciót vagy a nevet. A második lehetőség hasonló a kulcsnevek szótárának lekérdezéséhez. Az 1: 4 oszlopnevek nem léteznek, ami hibát eredményez. Ellenőrizze a felmérések_df.loc [0: 4] és a felmérések_df.iloc [0: 4] közötti különbséget is

Haladó kihívások lekérdezések

Válassza ki a DataFrame felmérések_df sorainak azon részhalmazát, amely az 1999-es év adatait tartalmazza, és amely legfeljebb 8-as súlyértékeket tartalmaz. Hány sort kapott ennek eredményeként? Hány sort kapott a párod?

surveys_df [(surveys_df ["év"] == 1999) & (felmérések_df ["súly"]; ha csak a végső szám érdekel, akkor a True értékek összege is használható: sum ((surveys_df [" év "] == 1999) & (felmérések_df [" súly "]

A Python isin függvényével lekérdezhet egy DataFrame-et az alábbi értéklista alapján: surveys_df [surveys_df ['species_id']. Isin ([listGoesHere])]. Az isin függvény segítségével keresse meg az összes olyan ábrát, amely egy adott fajt tartalmaz a DataFrame felmérések_fájlban. Hány rekord tartalmazza ezeket az értékeket?

Például használja a PB-t és a PL-t: surveys_df [surveys_df ['species_id']. Isin (['PB', 'PL'])] ['plot_id']. Az Unique () felsorolja azokat az összes parcellát, amelyeken részt vesznek ezekben faj. A surveys_df [surveys_df ['species_id']. Isin (['PB', 'PL'])] paranccsal. Alakkal megkaphatja a rekordok számát.

Kísérletezzen más lekérdezésekkel. Hozzon létre egy lekérdezést, amely megtalálja az összes sort, amelynek súlya nagyobb vagy egyenlő, mint 0.

Tipp: Itt bemutathatja, hogy ezek a szegmentálási műveletek valójában logikai indexelési műveleteken alapulnak (a lecke következő szakasza). A szűrés minden rekordnál jelzi, hogy teljesíti-e (Igaz) vagy nem (Hamis) a feltételt. A szegmentálást az egyes rekordok True/False értékének értelmezésével végezzük.

a Pythonban fel lehet használni, hogy mit kapjunk szemben a Pythonban megadott kijelölt adatokra. Ezzel egyenértékű nincs bent. Írjon olyan lekérdezést, amely a felmérés adataiban kiválasztja az „M” vagy „F” kivételével az összes nemet tartalmazó sort .

Maszk kihívások

  • Hozzon létre egy új DataFrame objektumot, amely csak olyan megfigyeléseket tartalmaz, amelyek értékei szerepelnek a sex oszlopban ne legyen az nő vagy férfi. Rendelje hozzá az új DataFrame nem minden egyes értékét egy új „x” értékhez. Meghatározza az alkészlet nullértékeinek teljes számát.

A Nan értékek összegét ellenőrizheti az összeg (surveys_df ['sex']. Isnull ()) segítségével, amely megegyezik a nem női és férfi rekordok számával .

  • Hozzon létre egy új DataFrame-et, amely csak olyan megfigyeléseket tartalmaz, amelyek nemi oszlopainak értéke férfi vagy női, és ahol a súlyérték nagyobb, mint 0. Ezután hozzon létre egy halmozott oszlopdiagramot az ábránként az átlagos tömegből, a férfiak és a nők közötti minden cselekmény.

Tipp: Mivel tudjuk, hogy az összes többi érték Nan, ezért kiválaszthatunk minden nem null értéket is (ez csak egy előnézet, erről a következő leckében még többet fogunk tudni):

Az unstack parancs miatt azonban a jelmagyarázat fejléce két szintet tartalmaz. Eltávolításához az oszlopneveket le kell egyszerűsíteni:

04-data-types-and-format

Kihívások a változó árakkal

  • Próbálja konvertálni a plot_id oszlopot erre: úszó A surveys_df.plot_id.astype ("float") használatával. Ezután megpróbálja a súlyt a-ra konvertálni egész szám. Mit mond Panda? Mi a baj ott?

A pandák nem képesek konvertálni a típusú adatokat úszó nak nek int ha az oszlop NaN értékeket tartalmaz.

Számla kihívások

  • Megszámolja az oszloponként hiányzó értékek számát. Tipp: A .count () módszer megadja oszloponként a nem NA megfigyelések számát. Vizsgálja meg a .isnull () metódust .

Ha a hallgatóknak problémái vannak a kimenet létrehozásával, vagy valami történik vele, akkor van egy „minta kimenet” nevű fájl azokkal az adatokkal, amelyeket elő kell állítaniuk.

05-összevonás-adatok

  • Az adatmappában két felmérési adatfájl található: survey2001.csv és survey2002.csv. Olvassa el az adatokat a Pythonban, és kombinálja a fájlokat egy új DataFrame-hez. Készítsen grafikont az átlagos telektömegről, a plot_id-ről, évenként, nemek szerint csoportosítva. Exportálja az eredményeket CSV formátumban, és ellenőrizze, hogy helyesen olvassák-e a Pythonban.
  • Hozzon létre egy új DataFrame-et, összekapcsolva a felmérések.csv és species.csv táblázatok tartalmát .

Ezután számítsa ki és ábrázolja az eloszlást:

1. taxon telekenként (az egyes taxonok fajainak száma parcellánként):

A fajok eloszlása ​​(taxonok száma parcellánként) a következőképpen számítható:

Tipp: Lehetséges ábrázolni az egyes taxonok egyedszámát is az egyes ábrákon (halmozott oszlopdiagram):

(különben a jelmagyarázat átfedi az oszlopdiagramot)

2. taxonok nemenként, parcellánként: Rendeljük az „M | F” értékeket a Nan értékekhez (ezeket „x” -re is lehet változtatni):

Taxonok száma minden egyes cselekmény/nem kombináció esetén:

Javaslat (csak vita céljából):

Kiszámítható az egyes taxonok egyedszáma az egyes parcellákon és nemenként:

Valójában ez a grafika nem a legjobb, amit választhatunk, mert nem olvasható ... A fejlesztés első alternatívája a szempontok. A pandák/matplotlib azonban alapértelmezés szerint nem biztosítják őket. Példa a tiszta matplotlib-re (az M | F használatával a meghatározott nemű rekordokhoz):

Jobb lenne azonban Seabornt és Altairt a többváltozós vizualizációk típusaival megadni.