Последний вопрос новичков, панд на день: как мне создать таблицу для одной серии?
Например:
my_series = pandas.Series([1,2,2,3,3,3])
pandas.magical_frequency_function( my_series )
>> {
1 : 1,
2 : 2,
3 : 3
}
Много поисков в Google привело меня к Series.describe () и pandas.crosstabs, но ни один из них не делает то, что мне нужно: одна переменная, учитываемая по категориям. Да, и было бы неплохо, если бы он работал для разных типов данных: строк, целых чисел и т. Д.
.value_counts().sort_index(1)
, чтобы первый столбец не мог немного выйти из строяAttributeError: 'DataFrame' object has no attribute 'value_counts'
pd.value_counts(df.values.ravel())
которая возвращает ряд,index
иvalues
атрибуты содержат уникальные элементы и их подсчет соответственно.Вы можете использовать понимание списка в кадре данных для подсчета частот столбцов как таковых
Сломать:
источник
Ответ, предоставленный @DSM, прост и понятен, но я подумал, что добавлю свой собственный вклад в этот вопрос. Если вы посмотрите на код pandas.value_counts , вы увидите, что там много чего происходит.
Если вам нужно рассчитать частоту множества серий, это может занять некоторое время. Более быстрой реализацией было бы использование numpy.unique с
return_counts = True
Вот пример:
Обратите внимание, что возвращенный элемент - это панды.
Для сравнения
numpy.unique
возвращает кортеж с двумя элементами: уникальными значениями и счетчиками.Затем вы можете объединить их в словарь:
А затем в
pandas.Series
источник
для частотного распределения переменной с чрезмерными значениями вы можете свернуть значения в классах,
Здесь я завышал значения
employrate
переменной, и нет никакого смысла в ее частотном распределении с прямымvalues_count(normalize=True)
частотное распределение
values_count(normalize=True)
без классификации, длина результата здесь 139 (кажется бессмысленной как частотное распределение):Ставя классификацию, мы ставим все значения с определенным диапазоном т.е.
после классификации мы имеем четкое частотное распределение. здесь мы легко можем видеть, что
37.64%
из стран, где уровень занятости между51-60%
и11.79%
из стран, уровень занятости между71-80%
источник