Найдите в столбце определенные фразы и посчитайте, сколько раз они появляются в столбце, и постройте график на гистограмме. - PullRequest
0 голосов
/ 29 сентября 2019

столбец поиска для каждого месяца года.Колонка организована так: «01-янв-2018».Я хочу узнать, сколько раз в столбце появляется «Январь-2018».В основном посчитайте это и нанесите на гистограмму.Я хочу, чтобы он отображал все значения для «января-2018», «февраля-2018» и т. Д. На графике должно быть 12 баров.Может быть, используя счет или сумму.Я извлекаю данные из CSV, используя pandas и python.

Я попытался распечатать их на консоли с некоторым успехом.Но я запутался как правильный способ поиска части даты.

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt 
    import csv 
    import seaborn as sns

    data = pd.read_csv(r'C:\Users\rmond\Downloads\PS_csvFile1.csv', error_bad_lines=False, encoding="ISO-8859-1", skiprows=6)
    cols = data.columns 
    cols = cols.map(lambda x: x.replace(' ', '_') if isinstance(x, (str)) else x)
    data.columns = cols
    print(data.groupby('Case_Date').mean().plot(kind='bar'))

Я ожидаю гистограмму, которая покажет общее количество за каждый месяц.Поэтому должно быть 12 гистограмм.Но я не уверен, как искать в столбце 12 раз и каждый раз искать только данные каждого месяца.Исключая дату, ищите только месяц и год.

1 Ответ

0 голосов
/ 29 сентября 2019

IIUC, это то, что вам нужно.

Давайте поработаем с приведенным ниже фреймом данных в качестве входного фрейма данных.

    date
0   1/31/2018
1   2/28/2018
2   2/28/2018
3   3/31/2018
4   4/30/2018
5   5/31/2018
6   6/30/2018
7   6/30/2018
8   7/31/2018
9   8/31/2018
10  9/30/2018
11  9/30/2018
12  9/30/2018
13  9/30/2018
14  10/31/2018
15  11/30/2018
16  12/31/2018

Приведенные ниже строки кода получат количество отсчетов для каждогомесяц в виде гистограммы.Когда у вас есть столбец в качестве объекта datetime, многие функции намного проще, а содержимое столбца гораздо более гибкое.При этом вам не нужна строка поиска названия месяца.

df['date'] = pd.to_datetime(df['date'])
df['my']=df.date.dt.strftime('%b-%Y')
ax = df.groupby('my', sort=False)['my'].value_counts().plot(kind='bar')
ax.set_xticklabels(df.my, rotation=90);

Вывод

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...