Pandas DataFrame Pivot с использованием дат и графов

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

Вот мой код для сортировки:

data = pd.DataFrame.from_csv('MYDATA.csv') data[['recvd_dttm','CompanyName']] data['recvd_dttm'].value_counts() count = data.groupby(["recvd_dttm","CompanyName"]).size() df = pd.DataFrame(count) df.pivot(index='recvd_dttm', columns='CompanyName', values='NumberCalls') 

Вот мой вывод df =

 recvd_dttm CompanyName 1/1/2015 11:42 Company 1 1 1/1/2015 14:29 Company 2 1 1/1/2015 8:12 Company 4 1 1/1/2015 9:53 Company 1 1 1/10/2015 11:38 Company 3 1 1/10/2015 11:31 Company 5 1 1/10/2015 12:04 Company 2 1 

я хочу

 Company Jan Feb Mar Apr May Company 1 10 4 45 40 34 Company 2 2 5 56 5 57 Company 3 3 7 71 6 53 Company 4 4 4 38 32 2 Company 5 20 3 3 3 29 

Я знаю, что для фреймов данных из этой документации http://pandas.pydata.org/pandas-docs/stable/reshaping.html для pandas существует отличная сводная функция, поэтому я пытаюсь использовать df.pivot (index = 'recvd_dttm', columns = 'CompanyName', values ​​= 'NumberCalls')

Одна из проблем заключается в том, что третий столбец не имеет имени, поэтому я не могу использовать его для значений = 'NumberCalls'. Вторая проблема заключается в том, как определить формат даты и времени в моем фреймворке и сделать его отображаемым только за месяц.

Изменить: CompanyName – это первый столбец, recvd_dttm – 15-й столбец. Это мой код после нескольких попыток:

 data = pd.DataFrame.from_csv('MYDATA.csv') data[['recvd_dttm','CompanyName']] data['recvd_dttm'].value_counts() RatedCustomerCallers = data['CompanyName'].value_counts() count = data.groupby(["recvd_dttm","CompanyName"]).size() df = pd.DataFrame(count).set_index('recvd_dttm').sort_index() df.index = pd.to_datetime(df.index, format='%m/%d/%Y %H:%M') result = df.groupby([lambda idx: idx.month, 'CompanyName']).agg({df.columns[1]: sum}).reset_index() result.columns = ['Month', 'CompanyName', 'NumberCalls'] result.pivot(index='recvd_dttm', columns='CompanyName', values='NumberCalls') 

Это бросает эту ошибку: KeyError: 'recvd_dttm' и не попадет в строку результатов.

One Solution collect form web for “Pandas DataFrame Pivot с использованием дат и графов”

Перед созданием сводной таблицы вам необходимо собрать данные. Если имя столбца отсутствует, вы можете либо df.iloc[:, 1] его на df.iloc[:, 1] (второй столбец), либо просто переименовать df.

 import pandas as pd import numpy as np # just simulate your data np.random.seed(0) dates = np.random.choice(pd.date_range('2015-01-01 00:00:00', '2015-06-30 00:00:00', freq='1h'), 10000) company = np.random.choice(['company' + x for x in '1 2 3 4 5'.split()], 10000) df = pd.DataFrame(dict(recvd_dttm=dates, CompanyName=company)).set_index('recvd_dttm').sort_index() df['C'] = 1 df.columns = ['CompanyName', ''] Out[34]: CompnayName recvd_dttm 2015-01-01 00:00:00 company2 1 2015-01-01 00:00:00 company2 1 2015-01-01 00:00:00 company1 1 2015-01-01 00:00:00 company2 1 2015-01-01 01:00:00 company4 1 2015-01-01 01:00:00 company2 1 2015-01-01 01:00:00 company5 1 2015-01-01 03:00:00 company3 1 2015-01-01 03:00:00 company2 1 2015-01-01 03:00:00 company3 1 2015-01-01 04:00:00 company4 1 2015-01-01 04:00:00 company1 1 2015-01-01 04:00:00 company3 1 2015-01-01 05:00:00 company2 1 2015-01-01 06:00:00 company5 1 ... ... .. 2015-06-29 19:00:00 company2 1 2015-06-29 19:00:00 company2 1 2015-06-29 19:00:00 company3 1 2015-06-29 19:00:00 company3 1 2015-06-29 19:00:00 company5 1 2015-06-29 19:00:00 company5 1 2015-06-29 20:00:00 company1 1 2015-06-29 20:00:00 company4 1 2015-06-29 22:00:00 company1 1 2015-06-29 22:00:00 company2 1 2015-06-29 22:00:00 company4 1 2015-06-30 00:00:00 company1 1 2015-06-30 00:00:00 company2 1 2015-06-30 00:00:00 company1 1 2015-06-30 00:00:00 company4 1 [10000 rows x 2 columns] # first groupby month and company name, and calculate the sum of calls, and reset all index # since we don't have a name for that columns, simply tell pandas it is the 2nd column we try to count on result = df.groupby([lambda idx: idx.month, 'CompanyName']).agg({df.columns[1]: sum}).reset_index() # rename the columns result.columns = ['Month', 'CompanyName', 'counts'] Out[41]: Month CompanyName counts 0 1 company1 328 1 1 company2 337 2 1 company3 342 3 1 company4 345 4 1 company5 331 5 2 company1 295 6 2 company2 300 7 2 company3 328 8 2 company4 304 9 2 company5 329 10 3 company1 366 11 3 company2 398 12 3 company3 339 13 3 company4 336 14 3 company5 345 15 4 company1 322 16 4 company2 348 17 4 company3 351 18 4 company4 340 19 4 company5 312 20 5 company1 347 21 5 company2 354 22 5 company3 347 23 5 company4 363 24 5 company5 312 25 6 company1 316 26 6 company2 311 27 6 company3 331 28 6 company4 307 29 6 company5 316 # create pivot table result.pivot(index='CompanyName', columns='Month', values='counts') Out[44]: Month 1 2 3 4 5 6 CompanyName company1 326 297 339 337 344 308 company2 310 318 342 328 355 296 company3 347 315 350 343 347 329 company4 339 314 367 353 343 311 company5 370 331 370 320 357 294 
  • Python Pandas: сводная таблица с aggfunc = счет уникальной
  • Как распространить столбец в кадре данных Pandas
  • pandas, поворачивающий блок данных, повторяющиеся строки
  • Столбец Pandas: порядок и промежуточные столбцы
  • Как я могу «раскрыть» определенные столбцы из pandas DataFrame?
  • Pandas: Фильтрация строк сводной таблицы, где счетчик меньше указанного значения
  • Pandas TimeGrouper и Pivot?
  • Таблицы строк Pandas Pivot
  •  
    Interesting Posts for Van-Lav

    Имя метода Python с двойным подчеркиванием переопределено?

    Связи Python pyobbc с IBM Netezza Erroring

    Как найти индекс массива в массиве

    Байт-массив в шестнадцатеричную строку

    Как получить доступ к HttpRequest из urls.py в Django

    склеарная агломерационная кластерная матрица связывания

    Подраздел массива numpy неактивно делится атрибутами между экземплярами

    Обнаружение щелчка мыши Pygame

    Как я могу постоянно хранить команды в Python REPL / prompt?

    Python, OpenCV: невозможно создать настраиваемый каскад LBP, используя opencv_traincascade

    Откройте одинаково смежные строки с регулярным выражением и python

    Python Regex – определение первого и последнего элементов в списке

    В python, как эффективно найти самый большой последовательный набор чисел в списке, которые не обязательно смежны?

    Внедрение QM-кодирования в Python – обязательное 16-битное слово?

    Есть ли подходящие леса для Django? (A la Ruby on Rails)

    Python - лучший язык программирования в мире.