Как получить количество строк в кадре данных Pandas?



Я пытаюсь получить количество строк dataframe 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'




что я делаю не так?



По данным ответ дано @ root лучший (the самый быстрый) способ проверить длину df-это позвонить:



df.shape[0]
646   12  

12 ответов:

можно использовать .shape собственность или просто len(DataFrame.index). Однако есть заметные различия в производительности ( len(DataFrame.index) Это самый быстрый):

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: df = pd.DataFrame(np.arange(12).reshape(4,3))

In [4]: df
Out[4]: 
   0  1  2
0  0  1  2
1  3  4  5
2  6  7  8
3  9  10 11

In [5]: df.shape
Out[5]: (4, 3)

In [6]: timeit df.shape
2.77 µs ± 644 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [7]: timeit df[0].count()
348 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [8]: len(df.index)
Out[8]: 4

In [9]: timeit len(df.index)
990 ns ± 4.97 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

enter image description here

EDIT: как отметил @Dan Allen в комментариях len(df.index) и df[0].count() не заменимы как count исключить NaN s,

предположим df это ваш фрейм данных тогда:

count_row = df.shape[0]  # gives number of row count
count_col = df.shape[1]  # gives number of col count

использовать len(df). Это работает как панды 0.11 или, может быть, даже раньше.

__len__() в настоящее время (0.12) документально с Returns length of index. Информация о времени, настроенная так же, как и в ответе root:

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) напрямую, но это не должно играть никакой роли в большинстве случаев.

помимо вышеуказанных ответов использование может использовать df.axes чтобы получить кортеж с индексами строк и столбцов, а затем использовать len() функция:

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

для получения строк, используйте

df.index

и для столбцов, используйте

df.columns

вы всегда можете использовать len(anyList) для получения количества списка, следовательно, вы можете использовать len(df.index) для получения количества строк, или короче попробовать len(df) количество строк.

в качестве альтернативы вы можете использовать df.shape[0] and df.shape[1] для получения количества строк и столбцов, соответственно.

Я пришел к панд из R фон, и я вижу, что панды гораздо сложнее, когда дело доходит до выбора строки или столбца. Мне пришлось бороться с этим некоторое время, а затем я нашел несколько способов справиться с:

получение количества столбцов:

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

получение количества строк:

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

...основываясь на ответе Яна-Филиппа Герке.

почему len(df) или len(df.index) быстрее df.shape[0]. Посмотри на код. пеленгатор.форма-это @property который выполняет вызов метода DataFrame len два раза.

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]

df.shape возвращает форму фрейма данных в виде кортежей (нет. из рядов-нет. из седла).

вы можете просто получить доступ нет. из рядов или нет. Колс с df.shape[0] или df.shape[1], соответственно, что совпадает с доступом к значениям кортежа.

количество строк (используйте любой из):

df.shape[0]
len(df)

в случае, если вы хотите получить количество строк в середине цепочки, вы можете использовать:

df.pipe(len)

пример:

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

Это может быть полезно, если вы не хотите помещать длинный оператор внутри функции len ().

вы могли бы использовать __len__() вместо этого, но __len__ () выглядит немного странно.

для dataframe df, количество строк в формате печатной запятой используется при изучении данных:

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

пример:

nrow(my_df)
12,456,789

легко одной строкой

your_data _frame.shape

даст вам простое количество строк и столбцов

Comments

    Ничего не найдено.