Bagaimana cara saya mengambil jumlah kolom dalam bingkai data Pandas?

184

Bagaimana Anda secara terprogram mengambil jumlah kolom dalam bingkai data panda? Saya berharap untuk sesuatu seperti:

df.num_columns
pengguna1802143
sumber

Jawaban:

305

Seperti itu:

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

len(df.columns)
3
John
sumber
35
plus df.shapememberi tuple dengan (n_rows, n_columns)
mkln
3
@ mkln jika Anda memposting df.shape [1] sebagai jawaban, saya beri +1. Ini adalah cara yang lebih baik untuk bekerja dengan numpy dan pantas menjadi jawaban terpisah.
Phil Cooper
selesai @ PhilCooper mungkin Anda bisa menjelaskan mengapa df.shapelebih baik? Dugaan saya adalah bahwa itu tidak memanggil fungsi tetapi hanya membaca atribut dari memori?
mkln
113

Alternatif:

df.shape[1]

( df.shape[0]adalah jumlah baris)

mkln
sumber
2
1 karena saya ingin mendorong pengalamatan objek numpy dan panda dengan sintaks tipe martix. (df.shape vs len (df.columns)). Sejujurnya, jika Anda melihat deskriptor panda untuk bentuk, ia memanggil len (df.columns) tetapi array numpy dan matricies memilikinya sebagai atribut. operasi vektor yang paling efisien dapat dilakukan dengan sintaks python biasa yang bertentangan dengan operasi vektor dan hampir selalu salah (operasi numba / jit dikecualikan dari kritik itu)
Phil Cooper
26

Jika variabel yang memegang kerangka data disebut df, maka:

len(df.columns)

memberikan jumlah kolom.

Dan bagi mereka yang menginginkan jumlah baris:

len(df.index)

Untuk tuple yang berisi jumlah baris dan kolom:

df.shape
multigoodverse
sumber
3
Tidak akan len(df)memberi Anda baris?
Padraic Cunningham
4
@PadraicCunningham panda memiliki banyak pintasan yang mudah dilupakan jadi saya lebih suka mengabaikannya dan menggunakan logika utama sebagai gantinya untuk menyelesaikan masalah. Anda mungkin mengorbankan kecepatan pemrosesan kadang-kadang, tetapi saya menghargai waktu pengkodean dan pembacaan kode saya lebih dari beberapa detik waktu pemrosesan. Dalam kasus khusus ini: jika Anda mengetahui bahwa jumlah baris dapat dihitung dengan len (df.index), lain kali Anda membutuhkan jumlah kolom itu wajar untuk melakukan len (df.columns).
multigoodverse
0

Ini bekerja untuk saya len (daftar (df)).

Tanmay Ghanekar
sumber
Dari Ulasan: Hai, postingan ini sepertinya tidak memberikan jawaban yang berkualitas untuk pertanyaan itu. Harap edit jawaban Anda dan perbaiki, atau cukup kirimkan sebagai komentar.
sɐunıɔ ןɐ qɐp
Jangan lakukan itu. Ini membuat daftar baru, membuang-buang memori dan kecepatan.
jmmcd
0

Fungsi df.info () akan memberi Anda hasil seperti di bawah ini. Jika Anda menggunakan metode read_csv dari Pandas tanpa parameter sep atau sep dengan ",".

raw_data = pd.read_csv("a1:\aa2/aaa3/data.csv")
raw_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5144 entries, 0 to 5143
Columns: 145 entries, R_fighter to R_age
AshishSingh007
sumber
0

Ada beberapa opsi untuk mendapatkan nomor kolom dan informasi kolom seperti:
mari kita periksa.

local_df = pd.DataFrame (np.random.randint (1,12, size = (2,6)), kolom = ['a', 'b', 'b', 'c', 'd', 'e', ​​'f ']) 1. local_df.shape [1] -> Bentuk kembali atribut tuple sebagai (baris & kolom) (0,1).

  1. local_df.info () -> info Metode akan mengembalikan informasi terperinci tentang bingkai data dan kolom-kolomnya seperti jumlah kolom, tipe data kolom, Bukan nilai nol, penggunaan memori oleh Data Frame

  2. len (local_df.columns) -> atribut kolom akan mengembalikan objek indeks kolom bingkai data & fungsi len akan mengembalikan total kolom yang tersedia.

  3. local_df.head (0) -> metode kepala dengan parameter 0 akan mengembalikan baris ke-1 df yang sebenarnya hanyalah header.

Dengan asumsi jumlah kolom tidak lebih dari 10. Untuk kesenangan loop: li_count = 0 untuk x dalam local_df: li_count = li_count + 1 print (li_count)

AshishSingh007
sumber