질문자 :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", )
rootdf
가 데이터 프레임이라고 가정하면 다음과 같습니다.
count_row = df.shape[0] # Gives number of rows count_col = df.shape[1] # Gives number of columns
또는 더 간결하게,
r, c = df.shape
Nasir Shahlen(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 GehrckePandas DataFrame의 행 수는 어떻게 얻습니까?
이 표는 권장되는 방법과 함께 DataFrame(또는 완전성을 위해 Series)에서 무언가를 계산하려는 다양한 상황을 요약합니다.
각주
-
DataFrame.count
는 null이 아닌 개수가 열에 따라 다르기 때문에 각 열에 대한 개수를 Series
-
DataFrameGroupBy.size
는 동일한 그룹의 모든 열이 동일한 행 수를 공유하기 때문에 Series
반환합니다. -
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.size
와 len(s.index)
은 속도면에서 거의 동일합니다. 하지만 len(df)
추천합니다.
참고 size
는 속성이며 요소 수(=모든 시리즈의 행 수)를 반환합니다. df.shape[0] * df.shape[1]
과 동일한 결과를 반환하는 크기 속성을 정의합니다.
Null이 아닌 행 개수: DataFrame.count
및 Series.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
특정 열에서 호출됩니다.
cs95TL;DR 사용 len(df)
len()
사용하면 목록의 항목 수를 가져올 수 있습니다. 따라서 DataFrame의 행 수를 얻으려면 len(df)
를 사용하면 됩니다.
df.index
및 df.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