부서 수준 1의 집행 비율
from matplotlib import pyplot as plt
pd.set_option('display.max_rows', None)
%matplotlib inline
plt.rcParams('font.family') = 'Malgun Gothic'
plt.rcParams("figure.figsize") = (20, 10)
plt.rcParams("font.size") = 12
plt.rcParams("figure.autolayout") = True
df_seoul_1 = df_seoul(df_seoul('부서레벨1') == '서울시본청')
group_count_1 = df_seoul_1(('부서레벨1', '부서레벨2', '집행금액')).groupby(('부서레벨1','부서레벨2'), as_index = True)('집행금액').count()
group_count_1.plot(kind = 'bar')

서울시에서는 기획조정실과 행정실에서 사례가 많이 나온 것을 알 수 있다.

입법부와 입법공무원이 있는 국회사무국에서 많은 사건이 발생했다.

영리기업에서는 상수도관제센터에서 특히 많은 경우가 발생했다.

소방대의 경우 소방대와 재난관리본부가 차지하는 비중이 컸다.
부서 1급 전체에서 시행
group_sum_1 = df_seoul_1(('부서레벨1', '부서레벨2', '집행금액')).groupby(('부서레벨1','부서레벨2'), as_index = True)('집행금액').sum()
group_sum_1.plot(kind = 'bar')

실행 횟수와 군중에 대한 그래프는 거의 유사하게 나타납니다. 상수도에 대한 분석이 필요해 보인다. 기획조정실과 행정실에 집중하기로 했다.
매년
year_expense = df_expense_all('집행연도').value_counts()
year_expense
# 2018.0 72218
# 2017.0 70132
# Name: 집행연도, dtype: int64
2018년은 조금 더 있습니다.
month_total = pd.pivot_table(df_expense_all, index = ('집행월'), values=('집행금액'),
aggfunc = sum)
year_month_total = pd.pivot_table(df_expense_all, index = ('집행월'), columns=('집행연도'),
values=('집행금액'), aggfunc = sum)
eok_won = 100000000 # 억원
(year_month_total/eok_won).plot.bar(rot=0)
plt.ylabel('집행금액(억원)')
plt.title("업무추진비의 월별 집행금액")
plt.legend(('2017년', '2018년'))
plt.show()

12월에 가장 많은 체결량이 발생했음을 알 수 있습니다. 10월부터 상승 추세를 볼 수 있습니다. 1월부터 8월까지는 큰 변화가 없는 것 같습니다. 연도는 2017년과 2018년입니다.
요일별 발생 횟수 및 시간별 발생 횟수
df_seoul('집행일시').unique()
# array(('2017-01-26 13:10', '2017-01-25 22:41', '2017-01-24 12:35', ...,
# '2018-12-07 13:04', '2018-12-06 19:46', '2018-12-05 11:46'),
# dtype=object)
Execution Date 열을 보면 개체입니다. 구문 분석을 위해 날짜/시간 형식으로 변경해야 합니다.
# 날짜 -> 요일
week_day_name = ("월", "화", "수", "목", "금", "토", "일")
df_seoul('집행일시_요일') = (week_day_name(weekday) for weekday in expense_date_time.dt.weekday)
# 시간 변경
df_seoul('집행일시_시간') = (hour for hour in expense_date_time.dt.hour)
# 요일별 시각화
expense_weekday = expense_weekday.reindex(index = week_day_name)
expense_weekday.plot.bar(rot=0)
plt.title("요일별 업무추진비 집행 횟수")
plt.xlabel("요일")
plt.ylabel("집행 횟수")
plt.show()

토요일과 일요일에 일어난 것은 예상치 못한 일이었습니다. 주말에 무슨 일이 있었는지 보고 싶었습니다.
expense_hour_num = df_seoul('집행일시_시간').value_counts()
work_hour = ( (k+8)%24 for k in range(24))
expense_hour_num = expense_hour_num.reindex(index = work_hour)
expense_hour_num.plot.bar(rot = 0)
plt.title("시간별 업무추진비 집행 횟수")
plt.xlabel("집행 시간")
plt.ylabel("집행 횟수")
plt.show()

점심과 저녁 시간에 자주 발생하는 것을 볼 수 있습니다. 오전 12시, 이른 아침에 발생한 것은 예상치 못한 일이었다. 다음으로 물 공급만 제거하고 분석합니다.