Jak mogę pobrać liczbę kolumn w ramce danych Pandas?

184

W jaki sposób programowo pobierasz liczbę kolumn w ramce danych pandy? Miałem nadzieję na coś takiego:

df.num_columns
użytkownik1802143
źródło

Odpowiedzi:

305

Tak jak:

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

len(df.columns)
3
Jan
źródło
35
plus df.shapedaje krotkę z (n_rows, n_columns)
mkln
3
@mkln, jeśli opublikujesz df.shape [1] jako odpowiedź, dałbym +1. Jest to lepszy sposób pracy z Numpy i zasługuje na osobną odpowiedź.
Phil Cooper
Gotowe. @PhilCooper może mógłbyś wyjaśnić, dlaczego df.shapejest lepszy? zgaduję, że nie wywołuje funkcji, a jedynie odczytuje atrybut z pamięci?
mkln
113

Alternatywny:

df.shape[1]

( df.shape[0]to liczba rzędów)

Mkln
źródło
2
+1, ponieważ lubię zachęcać do adresowania obiektów numpy i pand ze składnią typu martix. (df.shape vs len (df.columns)). Prawda jest taka, że ​​jeśli spojrzysz na deskryptor pand dla kształtu, to nazywa się on len (df.columns), ale tablice i matematyki mają je jako atrybut. najbardziej wydajne operacje wektoryzacyjne można wykonywać przy użyciu zwykłych syntez w Pythonie, w przeciwieństwie do operacji wektoryzowanych i prawie zawsze są one niepoprawne (operacje numba / jit poza tą krytyką)
Phil Cooper
26

Jeśli zmienna przechowująca ramkę danych nazywa się df, to:

len(df.columns)

podaje liczbę kolumn.

A dla tych, którzy chcą liczbę rzędów:

len(df.index)

W przypadku krotki zawierającej liczbę zarówno wierszy, jak i kolumn:

df.shape
multigoodverse
źródło
3
Nie len(df)dałby ci kłótni?
Padraic Cunningham,
4
@PadraicCunningham pandy mają tak wiele skrótów, że łatwo je zapomnieć, więc wolę je zignorować i zamiast tego użyć głównej logiki do rozwiązania problemów. Czasami możesz poświęcić szybkość przetwarzania, ale cenię sobie czas kodowania i czytelność kodu ponad kilka sekund czasu przetwarzania. W tym szczególnym przypadku: jeśli nauczysz się, że liczbę wierszy można obliczyć za pomocą len (df.index), następnym razem, gdy będziesz potrzebować liczby kolumn, naturalne jest wykonanie len (df.columns).
multigoodverse
0

To działało dla mnie len (lista (df)).

Tanmay Ghanekar
źródło
Z recenzji: Cześć, ten post nie wydaje się zapewniać wysokiej jakości odpowiedzi na pytanie. Edytuj swoją odpowiedź i popraw ją lub opublikuj jako komentarz.
sɐunıɔ ןɐ qɐp
Nie rób tego Tworzy nową listę, marnując pamięć i szybkość.
jmmcd
0

Funkcja df.info () da wynik podobny do poniższego. Jeśli używasz metody read_csv Pandas bez parametru sep lub sep z „,”.

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
źródło
0

Istnieje wiele opcji uzyskania numeru kolumny i informacji o kolumnie, takich jak:
sprawdźmy je.

local_df = pd.DataFrame (np.losowy.randint (1,12, rozmiar = (2,6)), kolumny = ['a', 'b', 'c', 'd', 'e', ​​'f ']) 1. local_df.shape [1] -> Atrybut kształtu zwraca krotkę jako (wiersz i kolumny) (0,1).

  1. local_df.info () -> info Metoda zwróci szczegółowe informacje o ramce danych i jej kolumnach, takie jak liczba kolumn, typ danych kolumn, liczba wartości innych niż null, użycie pamięci przez ramkę danych

  2. len (local_df.columns) -> atrybut kolumny zwróci obiekt indeksu kolumn ramki danych, a funkcja len zwróci całkowitą liczbę dostępnych kolumn.

  3. local_df.head (0) -> metoda head z parametrem 0 zwróci pierwszy wiersz df, który właściwie jest tylko nagłówkiem.

Zakładając, że liczba kolumn nie jest większa niż 10. Dla zabawy w pętli: li_count = 0 dla x w local_df: li_count = li_count + 1 print (li_count)

AshishSingh007
źródło