Próbuję uzyskać liczbę wierszy ramki danych df za pomocą Pandas, a oto mój kod.
Metoda 1:
total_rows = df.count
print total_rows +1
Metoda 2:
total_rows = df['First_columnn_label'].count
print total_rows +1
Oba fragmenty kodu dają mi ten błąd:
TypeError: nieobsługiwane typy operandów dla +: „instancemethod” i „int”
Co ja robię źle?
df.count()
zwracana będzie tylko liczba wierszy bez NA / NaN dla każdej kolumny. Zamiast tego należy użyćdf.shape[0]
, który zawsze poprawnie poda liczbę wierszy.Odpowiedzi:
Możesz użyć
.shape
nieruchomości lub po prostulen(DataFrame.index)
. Istnieją jednak znaczące różnice w wydajności (len(DataFrame.index)
jest najszybsza):EDYCJA: Jak zauważył @Dan Allen w komentarzach
len(df.index)
idf[0].count()
nie można ich zamieniać, ponieważcount
wykluczaNaN
s,źródło
shape
w pracy interaktywnej, zamiast len (df): Wypróbowując inne filtrowanie, często muszę wiedzieć, ile pozostało elementów. Z kształtem widzę to po dodaniu .shape po moim filtrowaniu. Dzięki len () edycja wiersza poleceń staje się znacznie bardziej kłopotliwa, przechodząc tam iz powrotem.df.empty
jest najlepszą opcją.df.shape[0]
szybszy niżlen(df)
lublen(df.columns)
? Ponieważ 1 ns (nanosekunda) = 1000 µs (mikrosekunda), dlatego 1,17 µs = 1170ns, co oznacza, że jest on około 3 razy wolniejszy niż 381nsZałóżmy, że
df
twoja ramka danych to:Lub, bardziej zwięźle,
źródło
Zastosowanie
len(df)
. Działa to od pand 0.11, a może nawet wcześniej.__len__()
jest obecnie (0.12) udokumentowanyReturns length of index
. Informacje o czasie, skonfiguruj tak samo, jak w odpowiedzi roota:Ze względu na jedno dodatkowe wywołanie funkcji jest nieco wolniejsze niż
len(df.index)
bezpośrednie wywoływanie , ale nie powinno to odgrywać żadnej roli w większości przypadków użycia.źródło
Ta tabela podsumowuje różne sytuacje, w których chcesz policzyć coś w DataFrame (lub Series, dla kompletności), wraz z zalecanymi metodami.
Przykłady minimalnego kodu
Poniżej pokazuję przykłady każdej z metod opisanych w powyższej tabeli. Po pierwsze, konfiguracja -
Liczba wierszy z DataFrame:
len(df)
,df.shape[0]
lublen(df.index)
Głupio wydaje się porównywanie wydajności operacji o stałym czasie, zwłaszcza gdy różnica jest na poziomie „poważnie, nie martw się o to”. Ale wydaje się, że jest to trend w przypadku innych odpowiedzi, więc robię to samo dla kompletności.
Z 3 powyższych metod
len(df.index)
(jak wspomniano w innych odpowiedziach) jest najszybszy.Kolumna Hrabia z DataFrame:
df.shape[1]
,len(df.columns)
Analogicznie do
len(df.index)
,len(df.columns)
jest szybsza z dwóch metod (ale potrzeba więcej znaków do wpisania).Wiersz liczyć z serii:
len(s)
,s.size
,len(s.index)
s.size
ilen(s.index)
są mniej więcej takie same pod względem prędkości. Ale polecamlen(df)
.Liczba wierszy niepustych:
DataFrame.count
iSeries.count
Opisane tutaj metody liczą tylko wartości inne niż null (co oznacza, że NaN są ignorowane).
Wywołanie
DataFrame.count
zwróci liczby inne niż NaN dla każdej kolumny:W przypadku serii użyj
Series.count
podobnego efektu:Grupowa liczba wierszy:
GroupBy.size
Do
DataFrames
użyj,DataFrameGroupBy.size
aby policzyć liczbę wierszy na grupę.Podobnie,
Series
użyjeszSeriesGroupBy.size
.W obu przypadkach
Series
zwracane jest a . Ma to sensDataFrames
ponieważ wszystkie grupy mają tę samą liczbę wierszy.Grupowa liczba wierszy niepustych:
GroupBy.count
Podobnie jak powyżej, ale użyj
GroupBy.count
, nieGroupBy.size
. Zauważ, żesize
zawsze zwraca aSeries
, podczas gdycount
zwracaSeries
if, jeśli jest wywoływany w określonej kolumnie, albo teżDataFrame
.Następujące metody zwracają to samo:
Tymczasem
count
mamy... wywołany dla całego obiektu GroupBy, v / s,
Wywoływany w określonej kolumnie.
źródło
TL; DR
posługiwać się
len(df)
len()
jest twoim przyjacielem, może być używany do liczenia wierszy jakolen(df)
.Alternatywnie możesz uzyskać dostęp do wszystkich wierszy według
df.index
i wszystkich kolumn wedługdf.columns
, a ponieważ możesz użyćlen(anyList)
do uzyskania liczby list, użyjlen(df.index)
do uzyskania liczby wierszy ilen(df.columns)
do liczby kolumn.Albo można użyć
df.shape
która zwraca liczbę wierszy i kolumn razem, jeśli chcesz uzyskać dostęp liczba wierszy używać tylkodf.shape[0]
i liczby kolumn używać tylko:df.shape[1]
.źródło
Oprócz powyższych odpowiedzi użyj można użyć,
df.axes
aby uzyskać krotkę z indeksami wierszy i kolumn, a następnie użyćlen()
funkcji:źródło
... opierając się na odpowiedzi Jana-Philipa Gehrckego.
Powód, dla którego
len(df)
lublen(df.index)
jest szybszy niżdf.shape[0]
. Spójrz na kod. df.shape to metoda,@property
która uruchamia dwukrotnie metodę DataFramelen
.I pod maską Len (DF)
len(df.index)
będzie nieco szybszy niż,len(df)
ponieważ ma jedno wywołanie funkcji mniej, ale zawsze jest to szybsze niżdf.shape[0]
źródło
Przychodzę do pand z
R
tła i widzę, że pandy są bardziej skomplikowane, jeśli chodzi o wybór wiersza lub kolumny. Przez jakiś czas musiałem się z tym zmagać, a potem znalazłem sposoby na radzenie sobie z:pobieranie liczby kolumn:
uzyskanie liczby rzędów:
źródło
df.shape
. Zwraca odpowiednio liczbę wierszy i kolumn.Jeśli chcesz uzyskać liczbę wierszy w trakcie operacji łańcuchowej, możesz użyć:
Przykład:
Może to być przydatne, jeśli nie chcesz wstawiać długiej instrukcji do pliku
len()
funkcji.Możesz użyć
__len__()
zamiast tego, ale__len__()
wygląda trochę dziwnie.źródło
count = len(df.reset_index())
niżcount = df.reset_index().pipe(len)
. To pierwsze jest tylko wyszukiwaniem atrybutów bez wywołania funkcji.Hej, możesz użyć, zrób to również:
Powiedzmy, że
df
to twoja ramka danych. Następniedf.shape
daje kształt ramki danych, tj(row,col)
Dlatego przypisz poniższe polecenie, aby uzyskać wymagane
źródło
W przypadku ramki danych df drukowana liczba wierszy w formacie przecinka używana podczas eksploracji danych:
Przykład:
źródło
Alternatywną metodą do znalezienia liczby wierszy w ramce danych, która moim zdaniem jest najbardziej czytelnym wariantem, jest
pandas.Index.size
.Zauważ, że jak skomentowałem przyjętą odpowiedź:
źródło
Nie jestem pewien, czy to zadziała (dane MOGĄ zostać pominięte), ale może to działać:
a następnie za pomocą tego można znaleźć liczbę wierszy, uruchamiając fragment kodu i sprawdzając numer wiersza, który został Ci przekazany.
źródło
Można to zrobić dowolnie (
df
jest to nazwa DataFrame):Metoda 1: Korzystanie z
len
funkcji:len(df)
poda liczbę wierszy w nazwie DataFramedf
.Metoda 2: Korzystanie z
count
funkcji:df[col].count()
policzy liczbę wierszy w danej kolumniecol
.df.count()
poda liczbę wierszy dla wszystkich kolumn.źródło