A diplomások egyetem utáni fizetésének elemzése iparágak szerint

Adatfeltárás a Pandas segítségével

Az alábbi kérdésekre keressük a válaszokat:

Ebben a gyakorlatban a Google Colab Notebook szoftvert fogom használni. Lényegében ez egy online verziója a Jupyter-nek.

1. lépés

Először is hozzá kell adnunk a „salaries_by_college_major.csv” fájlt a Notebookhoz.

2. lépés

Importáljuk be a Pandas-t a Notebookba, és olvassuk be a .csv fájlt.

A Pandas egy nyílt forráskódú Python könyvtár, amelyet adatkezelésre és -elemzésre használnak. Különösen hasznos a strukturált adatokat (például táblázatos adatokat) kezelő feladatokhoz. Ezt a könyvtárat fogjuk most mi is használni.

				
					import pandas as pd
df = pd.read_csv('salaries_by_college_major.csv')
				
			

3. lépés

Nézzünk is rá a Pandas adatkeretünkre. A .head() parancs megmutatja az első 5 sort az adatkeretünkből.

				
					df.head() 
				
			

4. lépés

Adatfeltárás és adattisztítás a Pandas könyvtár segítségével

Az adatkészlet alapos megvizsgálása értékes betekintéseket és világosabb megértést nyújt arról az információról, amivel dolgozunk. Milyen kérdések merülhetnek fel itt?

A sorok és oszlopok számának megtekintéséhez használjuk a shape attribútumot:

				
					 df.shape
				
			

A fenti táblázat alján megkaptuk, hogy 51 sorunk és 6 oszlopunk van.

5. lépés

Hogy pontosabb képet kapjunk, vizsgáljuk meg az oszlopokat egy kicsit közelebbről.

				
					df.columns
				
			

6. lépés

Valószínűleg van néhány hiányzó érték és/vagy „Junk Data” valahol.

A .isna() metódust fogjuk használni, és megnézzük, találunk-e problémát a táblában.

				
					df.isna()
				
			

A futtatás után látjuk, hogy az utolsó sor különbözik az előtte álló soroktól.

Pontosan az 50. sorban van a probléma, ahol a „True” állítások jelennek meg.

7. lépés

Vizsgáljuk meg a dataframe (adattábla) utolsó néhány sorát:

				
					df.tail()
				
			

8. lépés

  1. Töröljük ki az utolsó sort, ahol az adatok hiányosak.
  2. Hozzunk létre egy új adattáblát az utolsó sor nélkül clean_df néven. Erre a Pandas .dropna() metódusát fogjuk használni.
  3. Ezek után ellenőrizzük az utolsó 5 sort ismét, hogy megbizonyosodjunk róla, hogy minden rendben van.
				
					clean_df = df.dropna()
clean_df.tail()
				
			

9. lépés

Oszlopok és egyedi cellák elérése az adattáblában

Egy adott oszlop elérését a dataframe-ben egyszerűen szögletes zárójelekkel adjuk meg, így:

				
					clean_df['Starting Median Salary']
				
			

10. lépés

Keressük meg a legmagasabb kezdő fizetést!

				
					clean_df['Starting Median Salary'].max()
				
			

11. lépés

De melyik egyetemi szakirány keres átlagosan, $74,300-t? (Meg kell tudnunk a sornak a számát vagy indexét.)

				
					clean_df['Starting Median Salary'].idxmax()
				
			

Eredményül 43-at kapunk.

12. lépés

Hogy megtudjuk annak a sornak megfelelő szak nevét, használhatjuk a .loc (location) tulajdonságot.

				
					clean_df['Undergraduate Major'].loc[43]
				
			

13. lépés

Ha nem adunk meg egy konkrét oszlopot, a .loc tulajdonság segítségével egy teljes sort lekérhetünk.

				
					
clean_df.loc[43]
				
			

14. lépés

Melyik egyetemi szakon végzettek érik el a legmagasabb medián fizetést a karrierjük közép időszakában?

				
					print(f"Highest Mid-Career Salary: {clean_df['Mid-Career Median Salary'].max()}")
print(f"Index for the max Mid-Career Median Salary: {clean_df['Mid-Career Median Salary'].idxmax()}")
print(f"Degree: {clean_df['Undergraduate Major'][8]}")
				
			

15. lépés

Mi a legalacsonyabb kezdő fizetés?

				
					
print(f"Starting Median Salary: {clean_df['Starting Median Salary'].min()}")
clean_df['Undergraduate Major'].loc[clean_df['Starting Median Salary'].idxmin()]
				
			

16. lépés

Mennyi az emberek medián fizetése a karrierjük közép időszakában?

				
					clean_df.loc[clean_df['Mid-Career Median Salary'].idxmin()]
				
			

Konzol output:

17. lépés

Legalacsonyabb kockázatú szakok

Az alacsony kockázatú szak olyan, ahol kicsi a különbség a legalacsonyabb és a legmagasabb fizetések között. Más szavakkal, ha a szakok 10. és 90. percentilis jövedelmei között kicsi a különbség, akkor a hallgatók nagyobb bizonyossággal számíthatnak munkára és fizetésre a diploma megszerzése után.

				
					clean_df['Mid-Career 90th Percentile Salary'] - clean_df['Mid-Career 10th Percentile Salary']
				
			

A .subtract() metódust is használhatjuk:

				
					clean_df['Mid-Career 90th Percentile Salary'].subtract(clean_df['Mid-Career 10th Percentile Salary'])
				
			

18. lépés

Egy újabb dataframe oszloppal fogunk most számolni. Vonjuk ki egymásból a 10. és 90. percentilis jövedelmek közötti különbséget. Ezt hozzáadhatjuk a meglévő dataframe-ünkhöz a .insert() metódussal. Ezek után pedig rendezzük a legkisebb különbség alapján. Annak megtekintésére, hogy mely diplomák rendelkeznek a legkisebb különbséggel, használhatjuk a .sort_values() metódust.

				
					spread_col = clean_df['Mid-Career 90th Percentile Salary'] - clean_df['Mid-Career 10th Percentile Salary']
clean_df.insert(1, 'Spread' , spread_col)
clean_df.head()
				
			

19. lépés

Melyik szak rendelkezik a legnagyobb potenciállal?

				
					highest_potential = clean_df.sort_values('Mid-Career 90th Percentile Salary' , ascending=False)
highest_potential[['Undergraduate Major' , 'Mid-Career 90th Percentile Salary']].head()
				
			

20. lépés

Mely szakokon a legnagyobb a fizetéskülönbség?

				
					highest_spread = clean_df.sort_values('Spread' , ascending=False)
highest_spread[['Undergraduate Major' , 'Spread']].head()
				
			

21. lépés

Mi a helyzet a középpálya-medián fizetéssel?

				
					highest_spread = clean_df.sort_values('Mid-Career Median Salary' , ascending=False)
highest_spread[['Undergraduate Major' , 'Mid-Career Median Salary']].head()
				
			

22. lépés

Adatok csoportosítása és pivotálása a Pandas-ban:

Az adatok csoportosítása azt jelenti, hogy az oszlopok értékei alapján kategóriákba rendezzük az adatokat. A pivotálás pedig segít az adatok átstrukturálásában úgy, hogy azokat könnyebben olvashassuk és elemezhessük.

				
					clean_df.groupby('Group').count()
				
			

23. lépés

Nézzük meg az átlagfizetéseket csoportonként.

				
					clean_df.groupby('Group').mean()
				
			

24. lépés

Módosítsunk a formátumon, hogy a táblázatunk könnyebben olvasható legyen:

				
					pd.options.display.float_format = '{:,.2f}'.format
clean_df.groupby('Group').mean()