etc./StackOverFlow

Pandas DataFrame의 행 수는 어떻게 얻습니까?

청렴결백한 만능 재주꾼 2023. 4. 13. 10:23
반응형

질문자 :yemu


Pandas로 데이터 프레임 df의 행 수를 얻으려고하는데 여기 내 코드가 있습니다.

방법 1:

 total_rows = df.count print total_rows + 1

방법 2:

 total_rows = df['First_columnn_label'].count print total_rows + 1

두 코드 조각 모두 다음 오류를 제공합니다.

TypeError: +에 대해 지원되지 않는 피연산자 유형: 'instancemethod' 및 'int'

내가 무엇을 잘못하고 있지?



데이터 프레임 df 의 경우 다음 중 하나를 사용할 수 있습니다.

  • len(df.index)
  • df.shape[0]
  • df[df.columns[0]].count() (가장 느리지만 첫 번째 열의 NaN 값 계산을 피함)

성능 플롯


플롯을 재현하는 코드:

 import numpy as np import pandas as pd import perfplot perfplot.save( "out.png", setup=lambda n: pd.DataFrame(np.arange(n * 3).reshape(n, 3)), n_range=[2**k for k in range(25)], kernels=[ lambda df: len(df.index), lambda df: df.shape[0], lambda df: df[df.columns[0]].count(), ], labels=["len(df.index)", "df.shape[0]", "df[df.columns[0]].count()"], xlabel="Number of rows", )

root

df 가 데이터 프레임이라고 가정하면 다음과 같습니다.

 count_row = df.shape[0] # Gives number of rows count_col = df.shape[1] # Gives number of columns

또는 더 간결하게,

 r, c = df.shape

Nasir Shah

len(df) :-)을 사용하세요.

__len__() 은 "인덱스 길이 반환"으로 문서화되어 있습니다.

타이밍 정보, 루트의 답변 과 같은 방식으로 설정하십시오.

 In [7]: timeit len(df.index) 1000000 loops, best of 3: 248 ns per loop In [8]: timeit len(df) 1000000 loops, best of 3: 573 ns per loop

len(df.index) 직접 호출하는 것보다 약간 느리다고 말하는 것이 물론 맞습니다. 그러나 이것은 대부분의 경우 중요하지 않습니다. len(df) 가 꽤 읽기 쉽다는 것을 알았습니다.


Dr. Jan-Philip Gehrcke

Pandas DataFrame의 행 수는 어떻게 얻습니까?

이 표는 권장되는 방법과 함께 DataFrame(또는 완전성을 위해 Series)에서 무언가를 계산하려는 다양한 상황을 요약합니다.

여기에 이미지 설명 입력

각주

  1. DataFrame.count 는 null이 아닌 개수가 열에 따라 다르기 때문에 각 열에 대한 개수를 Series
  2. DataFrameGroupBy.size 는 동일한 그룹의 모든 열이 동일한 행 수를 공유하기 때문에 Series 반환합니다.
  3. DataFrameGroupBy.count 반환 DataFrame null 이외의 수는 같은 그룹에 열을 가로 질러 다를 수 있기 때문에. 특정 열에 대해 null이 아닌 그룹별 개수를 얻으려면 df.groupby(...)['x'].count() 여기서 "x"는 계산할 열입니다.

# 최소한의 코드 예제

아래에서는 위의 표에 설명된 각 방법의 예를 보여줍니다. 먼저 설정 -

 df = pd.DataFrame({ 'A': list('aabbc'), 'B': ['x', 'x', np.nan, 'x', np.nan]}) s = df['B'].copy() df AB 0 ax 1 ax 2 b NaN 3 bx 4 c NaN s 0 x 1 x 2 NaN 3 x 4 NaN Name: B, dtype: object

DataFrame의 행 개수: len(df) , df.shape[0] 또는 len(df.index)

 len(df) # 5 df.shape[0] # 5 len(df.index) # 5

일정한 시간 작업의 성능을 비교하는 것은 어리석은 것 같습니다. 특히 차이가 "심각하게, 걱정하지 마십시오" 수준일 때. 그러나 이것은 다른 답변의 추세 인 것 같아서 완전성을 위해 똑같이하고 있습니다.

위의 세 가지 방법 중 len(df.index) (다른 답변에서 언급했듯이)이 가장 빠릅니다.

메모

  • 위의 모든 방법은 단순한 속성 조회이므로 일정한 시간 작업입니다.
  • df.shape (유사 ndarray.shape ) 속성입니다 반환하는 튜플 (# Rows, # Cols) . 예를 들어, df.shape 는 여기의 예에서 (8, 2) 를 반환합니다.

DataFrame의 열 개수: df.shape[1] , len(df.columns)

 df.shape[1] # 2 len(df.columns) # 2

len(df.index) 와 유사하게 len(df.columns) 는 두 가지 방법 중 더 빠릅니다(그러나 입력하는 데 더 많은 문자가 필요함).

시리즈의 행 개수: len(s) , s.size , len(s.index)

 len(s) # 5 s.size # 5 len(s.index) # 5

s.sizelen(s.index) 은 속도면에서 거의 동일합니다. 하지만 len(df) 추천합니다.

참고 size 는 속성이며 요소 수(=모든 시리즈의 행 수)를 반환합니다. df.shape[0] * df.shape[1] 과 동일한 결과를 반환하는 크기 속성을 정의합니다.

Null이 아닌 행 개수: DataFrame.countSeries.count

여기에 설명된 메서드는 null이 아닌 값만 계산합니다(즉, NaN은 무시됨).

DataFrame.count 를 호출 하면 각 열에 대해 NaN이 아닌 카운트가 반환됩니다.

 df.count() A 5 B 3 dtype: int64

Series의 경우 Series.count 를 사용하여 비슷한 효과를 냅니다.

 s.count() # 3

그룹별 행 수: GroupBy.size

DataFrames 경우 DataFrameGroupBy.size를 사용하여 DataFrameGroupBy.size 행 수를 계산합니다.

 df.groupby('A').size() A a 2 b 2 c 1 dtype: int64

마찬가지로 Series 경우 SeriesGroupBy.size 사용합니다.

 s.groupby(df.A).size() A a 2 b 2 c 1 Name: B, dtype: int64

두 경우 모두 Series 가 반환됩니다. 이는 모든 그룹이 동일한 행 수를 공유하기 때문에 DataFrames 에도 의미가 있습니다.

그룹별 Null이 아닌 행 수: GroupBy.count

위와 유사하지만 GroupBy.count 가 아닌 GroupBy.size . size Series 반환하는 반면 count 는 특정 열에서 호출된 경우 Series 반환하고 DataFrame 합니다.

다음 메서드는 동일한 결과를 반환합니다.

 df.groupby('A')['B'].size() df.groupby('A').size() A a 2 b 2 c 1 Name: B, dtype: int64

한편, count 에 대해 우리는

 df.groupby('A').count() B A a 2 b 1 c 0

...전체 GroupBy 개체에 대해 호출됨

 df.groupby('A')['B'].count() A a 2 b 1 c 0 Name: B, dtype: int64

특정 열에서 호출됩니다.


cs95

TL;DR 사용 len(df)

len() 사용하면 목록의 항목 수를 가져올 수 있습니다. 따라서 DataFrame의 행 수를 얻으려면 len(df) 를 사용하면 됩니다.

df.indexdf.columns 하여 모든 행과 모든 열에 각각 액세스할 수 있습니다. 요소 번호를 가져오기 위해 len(anyList) len(df.index) 을 사용하면 행 수를 제공하고 len(df.columns) 을 사용하면 열 수를 제공합니다.

또는 행과 열의 수를 함께 반환하는 df.shape 를 사용할 수 있습니다(튜플로). 행 수에 액세스하려면 df.shape[0] 만 사용하십시오. 열 수의 경우 df.shape[1] 만 사용하십시오.


Memin

이전 답변과는 별도로 df.axes 를 사용하여 행 및 열 인덱스가 있는 튜플을 가져온 다음 len() 함수를 사용할 수 있습니다.

 total_rows = len(df.axes[0]) total_cols = len(df.axes[1])

Nik

... Jan-Philip Gehrcke의 답변을 기반으로 합니다.

len(df) 또는 len(df.index) df.shape[0] 보다 빠른 이유:

코드를 보세요. df.shape는 len 두 번 호출하는 DataFrame 메서드를 실행 @property

 df.shape?? Type: property String form: <property object at 0x1127b33c0> Source: # df.shape.fget @property def shape(self): """ Return a tuple representing the dimensionality of the DataFrame. """ return len(self.index), len(self.columns)

그리고 len(df) 후드 아래

 df.__len__?? Signature: df.__len__() Source: def __len__(self): """Returns length of info axis, but here we use the index """ return len(self.index) File: ~/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py Type: instancemethod

len(df.index) 는 함수 호출이 하나 적기 때문에 len(df) 보다 약간 빠르지 df.shape[0]


debo

저는 R 배경에서 Pandas에 왔으며 행이나 열을 선택하는 데 Pandas가 더 복잡하다는 것을 알았습니다.

나는 한동안 그것과 씨름해야 했고, 그 다음 나는 처리할 몇 가지 방법을 찾았습니다.

열 수 얻기:

 len(df.columns) ## Here: # df is your data.frame # df.columns returns a string. It contains column's titles of the df. # Then, "len()" gets the length of it.

행 수 얻기:

 len(df.index) # It's similar.

Catbuilts

다음과 같이 할 수도 있습니다.

df 가 데이터 프레임이라고 가정 해 봅시다. 그런 다음 df.shape (row,col) 의 모양을 제공합니다.

따라서 아래 명령을 할당하여 필요한

 row = df.shape[0], col = df.shape[1]

Saurav

연결된 작업 중에 행 수를 얻으려면 다음을 사용할 수 있습니다.

 df.pipe(len)

예시:

 row_count = ( pd.DataFrame(np.random.rand(3,4)) .reset_index() .pipe(len) )

len() 함수 안에 긴 문장을 넣지 않으려는 경우에 유용할 수 있습니다.

대신 __len__() 사용할 수 __len__() 은 약간 이상해 보입니다.


Allen

데이터 프레임 df의 경우 데이터를 탐색하는 동안 사용되는 인쇄된 쉼표 형식의 행 수:

 def nrow(df): print("{:,}".format(df.shape[0]))

예시:

 nrow(my_df) 12,456,789

Vlad

둘 중 하나가 가능합니다( df 는 DataFrame의 이름입니다).

방법 1 : len 함수 사용:

len(df) df 라는 DataFrame의 행 수를 제공합니다.

방법 2 : count 함수 사용:

df[col].count() col 의 행 수를 계산합니다.

df.count() 는 모든 열의 행 수를 제공합니다.


Kiprono Elijah Koech

가장 읽기 쉬운 변형이라고 생각되는 데이터 프레임의 행 수를 찾는 다른 방법은 pandas.Index.size 입니다.

수락 된 답변 에 대해 언급했듯이 ,

의심되는 pandas.Index.size len(df.index) 보다 빠르지만 timeit 은 그렇지 않다고 알려줍니다(루프당 ~150ns 느림).


jorijnsmit

나는이 (데이터를 생략 할 수있다) 작동하면 것인지 확실하지,하지만이 작동 할 수있어 :

 *dataframe name*.tails(1)

그런 다음 이것을 사용하여 코드 조각을 실행하고 제공된 행 번호를 보고 행 수를 찾을 수 있습니다.


Abhiraam Eranti

데이터 세트가 "data"이고 데이터 세트의 이름을 " data_fr "로 지정하고 data_fr의 행 수는 "nu_rows"라고 생각하십시오.

 #import the data frame. Extention could be different as csv,xlsx or etc. data_fr = pd.read_csv('data.csv') #print the number of rows nu_rows = data_fr.shape[0] print(nu_rows)

SamithaP

# this will give you the number of rows in the dataframe df df.shape[0]

Amandeep Singh

출처 : http:www.stackoverflow.com/questions/15943769/how-do-i-get-the-row-count-of-a-pandas-dataframe

반응형