2013-07-04 55 views
8

Rõ ràng là mới đối với Pandas. Làm thế nào tôi có thể chỉ cần đếm số lượng hồ sơ trong một khung dữ liệu.pandas python cách đếm số lượng bản ghi hoặc hàng trong một khung dữ liệu

Tôi đã nghĩ một số điều đơn giản như điều này sẽ làm điều đó và tôi dường như không thể tìm thấy câu trả lời trong tìm kiếm ... có lẽ vì nó quá đơn giản.

cnt = df.count 
print cnt 

mã trên thực tế chỉ cần in toàn bộ df

+0

Ok nó rất đơn giản. len (dataframe) là câu trả lời dễ dàng. in len (df3) – IcemanBerlin

+0

Nó hoạt động ... giống như một fyi có vẻ như bạn đang rời khỏi '()', vì vậy khi bạn gọi 'cnt = df.count' bạn đang thực sự thiết lập' cnt' bằng một phương thức của khung dữ liệu, không phải là kết quả của phương thức đó. Hãy thử 'cnt = df.count(); in cnt' để xem tôi đang nói về cái gì. – tshauck

+0

Ah. cảm ơn tshauck, tôi đoán đó thực sự là những gì tôi đang cố gắng làm. Kết quả của bài kiểm tra đó thực sự đã in số lượng cho mỗi trường i.e.Field1 = 10 và dòng kế tiếp Field2 = 10. Tôi đoán bạn cũng có thể áp dụng số đếm cho một trường cụ thể? – IcemanBerlin

Trả lời

9

Đối với các câu hỏi của bạn ... đếm một Dòng? Tôi quyết định để làm cho nó một câu hỏi, nhưng tôi hy vọng nó sẽ giúp ...

Nói rằng tôi có DataFrame sau

import numpy as np 
import pandas as pd 

df = pd.DataFrame(np.random.normal(0, 1, (5, 2)), columns=["A", "B"]) 

Bạn có thể đếm một cột duy nhất bởi

df.A.count() 
#or 
df['A'].count() 

cả đánh giá để 5.

Điều thú vị (hoặc một trong nhiều wrt pandas) là nếu bạn có giá trị NA, số lượng sẽ được xem xét.

Vì vậy, nếu tôi đã làm

df['A'][1::2] = np.NAN 
df.count() 

Kết quả sẽ là

A 3 
B 5 
2

Ví dụ Nan trên bỏ sót một mảnh, mà làm cho nó ít generic. Để thực hiện điều này "sử dụng chung" hơn df['column_name'].value_counts() Điều này sẽ cung cấp cho bạn số lượng của từng giá trị trong cột đó.

d=['A','A','A','B','C','C'," " ," "," "," "," ","-1"] # for simplicity 

df=pd.DataFrame(d) 
df.columns=["col1"] 
df["col1"].value_counts() 
     5 
A  3 
C  2 
-1 1 
B  1 
dtype: int64 
"""len(df) give you 12, so we know the rest must be Nan's of some form, while also having a peek into other invalid entries, especially when you might want to ignore them like -1, 0 , "", also""" 
+0

và nếu muốn sử dụng NaN: df ["col1"]. Value_counts (dropna = False) – SpeedCoder5

7

đơn giản, ROW_NUM = df.shape [0] # cung cấp cho số lượng hàng, đây là ví dụ:

import pandas as pd 
import numpy as np 

In [322]: df = pd.DataFrame(np.random.randn(5,2), columns=["col_1", "col_2"]) 

In [323]: df 
Out[323]: 
     col_1  col_2 
0 -0.894268 1.309041 
1 -0.120667 -0.241292 
2 0.076168 -1.071099 
3 1.387217 0.622877 
4 -0.488452 0.317882 

In [324]: df.shape 
Out[324]: (5, 2) 

In [325]: df.shape[0] ## Gives no. of rows/records 
Out[325]: 5 

In [326]: df.shape[1] ## Gives no. of columns 
Out[326]: 2 
3

Để có được số lượng hàng trong việc sử dụng dataframe:

df.shape[0] 

(và df.shape[1] để nhận số cột).

Là một thay thế, bạn có thể sử dụng

len(df) 

hoặc

len(df.index) 

(và len(df.columns) cho các cột)

shape là linh hoạt hơn và thuận tiện hơn len(), đặc biệt là cho công việc tương tác (chỉ cần được thêm vào cuối), nhưng len nhanh hơn một chút (xem als o this answer).

Để tránh: count() vì nó trả số lượng phi NA/quan sát rỗng trên yêu cầu trục

len(df.index) nhanh

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.arange(24).reshape(8, 3),columns=['A', 'B', 'C']) 
df['A'][5]=np.nan 
df 
# Out: 
#  A B C 
# 0 0 1 2 
# 1 3 4 5 
# 2 6 7 8 
# 3 9 10 11 
# 4 12 13 14 
# 5 NaN 16 17 
# 6 18 19 20 
# 7 21 22 23 

%timeit df.shape[0] 
# 100000 loops, best of 3: 4.22 µs per loop 

%timeit len(df) 
# 100000 loops, best of 3: 2.26 µs per loop 

%timeit len(df.index) 
# 1000000 loops, best of 3: 1.46 µs per loop 

df.__len__ chỉ là một cuộc gọi đến len(df.index)

import inspect 
print(inspect.getsource(pd.DataFrame.__len__)) 
# Out: 
#  def __len__(self): 
#   """Returns length of info axis, but here we use the index """ 
#   return len(self.index) 

Tại sao bạn không nên sử dụng count()

df.count() 
# Out: 
# A 7 
# B 8 
# C 8 
Các vấn đề liên quan