Apabila cuba memahami DataFrame yang besar dalam Pandas, anda mungkin perlu mensubsetkannya mengikut lajur dan baris. Dalam tutorial ini kami akan menunjukkan kes penggunaan yang paling lazim bagi pembahagian lajur DataFrame anda.
Kami akan mulakan dengan menyediakan contoh DataFrame kami, yang akan kami lakukan dengan menjalankan kod Python berikut dalam persekitaran kegemaran kami (untuk memudahkan, saya menggunakan Anaconda dan Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Sekarang, mari kita lihat baris pertama Bingkai Data kami menggunakan kaedah head().
languages.head()
Seperti yang anda lihat, ini adalah DataFrame yang cukup mudah yang akan kami gunakan sebagai contoh dalam siaran ini:
| |
bahasa |
purata_tahap_kesukaran |
purata_gaji |
aplikasi |
| 0 |
Ular sawa |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Menapis satu lajur
Kami akan mulakan dengan kes yang paling mudah, iaitu subset satu lajur daripada set data kami. Menjalankan arahan berikut akan mencipta objek Siri:
Mengikut nama / label
languages["language"]
Outputnya ialah Siri:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Nama: bahasa, dtype: objek
type(languages["language"])
panda.core.series.Series
Mengikut indeks
Perintah berikut juga akan mengembalikan Siri yang mengandungi lajur pertama
languages.iloc[:,0]
Memilih berbilang lajur
Dengan nama
Apabila menghantar senarai lajur, Pandas akan mengembalikan DataFrame yang mengandungi sebahagian daripada data.
languages[["language", "applications"]]
| |
bahasa |
aplikasi |
| 0 |
Ular sawa |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Mengikut label (dengan lokasi)
df.loc[:,["language","applications"]]
Hasilnya akan serupa.
Mengikut indeks
Sekarang mari kita dapatkan berbilang lajur dengan menggunakan indeks:
languages.iloc[: ,[0,3]]
| |
bahasa |
aplikasi |
| 0 |
Ular sawa |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Dengan syarat
Dalam kes ini, kami hanya akan menunjukkan lajur nama yang sepadan dengan ungkapan tertentu. Kami akan menggunakan kaedah penapis yang agak berguna :
languages.filter(axis = 1, like="avg")
Nota:
- kita juga boleh menapis mengikut ungkapan biasa tertentu (regex).
- Kita boleh menggunakan paksi parameter=0 untuk menapis mengikut nilai baris tertentu.
Tapis baris tertentu mengikut syarat
Berikut ialah cara yang agak mudah untuk mensubsetkan DataFrame mengikut nilai baris:
languages[(languages["applications"] > 15)]
Kami hanya mempunyai satu hasil:
languages[(languages["applications"] > 15)]
| |
bahasa |
purata_tahap_kesukaran |
purata_gaji |
aplikasi |
| 3 |
PHP |
1 |
80 |
20 |