Я пытаюсь получить количество строк в df с помощью Pandas, и вот мой код.
Способ 1:
total_rows = df.count
print total_rows +1
Способ 2:
total_rows = df['First_columnn_label'].count
print total_rows +1
Оба фрагмента кода дают мне эту ошибку:
Ошибка типа: неподдерживаемые типы операндов для +: 'instancemethod' и 'int'
Что я делаю неправильно?
df.count()
будет только возвращать количество не-NA / NaN строк для каждого столбца. Вы должны использоватьdf.shape[0]
вместо этого, который всегда будет правильно сообщать вам количество строк.Ответы:
Вы можете использовать
.shape
собственность или простоlen(DataFrame.index)
. Тем не менее, есть заметные различия в производительности (len(DataFrame.index)
самые быстрые):РЕДАКТИРОВАТЬ: Как @Dan Аллен отметил в комментариях
len(df.index)
иdf[0].count()
не являются взаимозаменяемыми, заcount
исключениемNaN
s,источник
shape
в интерактивной работе вместо len (df): пробуя различную фильтрацию, мне часто нужно знать, сколько осталось элементов. С помощью формы я могу увидеть это, просто добавив .shape после моей фильтрации. С len () редактирование командной строки становится намного более громоздким, переходя назад и вперед.df.empty
это лучший вариант.df.shape[0]
быстрее чемlen(df)
илиlen(df.columns)
? Так как 1 нс (наносекунда) = 1000 мкс (микросекунда), следовательно, 1,17 мкс = 1170 нс, что означает, что это примерно в 3 раза медленнее, чем 381 нсПредположим,
df
что ваш фрейм данных:Или, более кратко,
источник
Использование
len(df)
. Это работает с пандами 0.11 или, может быть, даже раньше.__len__()
в настоящее время (0.12) задокументировано сReturns length of index
. Информация о времени, настраивается так же, как в ответе root:Из-за одного дополнительного вызова функции он немного медленнее, чем
len(df.index)
прямой вызов , но в большинстве случаев это не должно играть никакой роли.источник
Эта таблица суммирует различные ситуации, в которых вы хотите подсчитать что-либо в DataFrame (или Series, для полноты), а также рекомендуемые методы.
Примеры минимального кода
Ниже я показываю примеры каждого из методов, описанных в таблице выше. Во-первых, установка -
Ряд Граф в DataFrame:
len(df)
,df.shape[0]
илиlen(df.index)
Глупо сравнивать производительность операций с постоянным временем, особенно когда разница находится на уровне «серьезно, не беспокойтесь об этом». Но это похоже на тенденцию с другими ответами, поэтому я делаю то же самое для полноты.
Из 3 описанных выше методов
len(df.index)
(как уже упоминалось в других ответах) самый быстрый.Колонка графа из DataFrame:
df.shape[1]
,len(df.columns)
Аналогично
len(df.index)
,len(df.columns)
это самый быстрый из двух методов (но для ввода требуется больше символов).Ряд графа из серии:
len(s)
,s.size
,len(s.index)
s.size
иlen(s.index)
примерно одинаковы по скорости. Но я рекомендуюlen(df)
.Счетчик ненулевых строк:
DataFrame.count
иSeries.count
Методы, описанные здесь, учитывают только ненулевые значения (то есть NaN игнорируются).
Вызов
DataFrame.count
будет возвращать количество не-NaN для каждого столбца:Для серии используйте
Series.count
аналогичный эффект:Количество строк по группам:
GroupBy.size
Для
DataFrames
, используйтеDataFrameGroupBy.size
для подсчета количества строк в группе.Точно так же, для
Series
, вы будете использоватьSeriesGroupBy.size
.В обоих случаях
Series
возвращается. Это также имеет смысл,DataFrames
поскольку все группы имеют одинаковое количество строк.Количество групповых ненулевых строк:
GroupBy.count
Похоже на выше, но использовать
GroupBy.count
не надоGroupBy.size
. Обратите внимание, чтоsize
всегда возвращает aSeries
, в то время какcount
возвращаетSeries
if, если вызывается для определенного столбца, или же aDataFrame
.Следующие методы возвращают одно и то же:
Между тем, у
count
нас есть... вызывается для всего объекта GroupBy, v / s,
Вызывается в определенном столбце.
источник
TL; DR
использование
len(df)
len()
Ваш друг, он может быть использован для подсчета строк какlen(df)
.Кроме того, вы можете получить доступ ко всем строкам по
df.index
всем столбцам и по нимdf.columns
, а также использоватьlen(anyList)
для получения счетчика списка,len(df.index)
для получения количества строк иlen(df.columns)
для столбца.Или, вы можете использовать ,
df.shape
который возвращает количество строк и столбцов вместе, если вы хотите получить доступ количество строк только использоватьdf.shape[0]
и для числа столбцов используйте только:df.shape[1]
.источник
Помимо вышеупомянутых ответов, использование может использовать,
df.axes
чтобы получить кортеж с индексами строк и столбцов, а затем использоватьlen()
функцию:источник
... основываясь на ответе Яна-Филиппа Герке.
Причина почему
len(df)
илиlen(df.index)
быстрее чемdf.shape[0]
. Посмотри на код. df.shape - это@property
метод, который запускает метод DataFrame, вызываемыйlen
дважды.И под капотом лен (df)
len(df.index)
будет немного быстрее, чем,len(df)
поскольку он имеет на один вызов меньше функции, но это всегда быстрее, чемdf.shape[0]
источник
Я прихожу к пандам из
R
фона и вижу, что панды сложнее, когда дело доходит до выбора строки или столбца. Мне пришлось некоторое время с этим бороться, а потом я нашел несколько способов справиться с этим:получение количества столбцов:
получение количества строк:
источник
df.shape
. Возвращает количество строк и столбцов соответственно.Если вы хотите получить количество строк в середине цепочечной операции, вы можете использовать:
Пример:
Это может быть полезно, если вы не хотите помещать длинную инструкцию в
len()
функцию.Вы можете использовать
__len__()
вместо этого, но__len__()
выглядит немного странно.источник
count = len(df.reset_index())
чемcount = df.reset_index().pipe(len)
. Первый - это просто поиск атрибута без вызова функции.Эй, вы можете использовать сделать это также:
Позвольте сказать,
df
это ваш dataframe. Затемdf.shape
дает вам форму вашего dataframe т.е.(row,col)
Таким образом, назначьте команду ниже, чтобы получить требуемый
источник
Для фрейма данных df счетчик строк в формате с запятой используется при исследовании данных:
Пример:
источник
Альтернативный метод для определения количества строк в кадре данных, который я думаю, является наиболее читаемым вариантом
pandas.Index.size
.Обратите внимание, что, как я прокомментировал принятый ответ:
источник
Я не уверен, что это сработает (данные МОГУТ быть опущены), но это может сработать:
и затем, используя это, вы можете найти количество строк, запустив фрагмент кода и посмотрев номер строки, который вам дали.
источник
Любое из этого может сделать (
df
это имя DataFrame):Метод 1: Использование
len
функции:len(df)
даст количество строк в названном DataFramedf
.Способ 2: используя
count
функцию:df[col].count()
будет считать количество строк в данном столбцеcol
.df.count()
даст количество строк для всех столбцов.источник