실습

현재, 실천 Python 데이터 과학 강습을 3분의 1 정도 소화한 곳.

초학자라도 알기 쉬운 구성으로 매우 좋습니다.

단지, 말한대로 연습하고 있을 뿐이라고 몸에 익은 느낌이 들지 않기 때문에, 지금까지의 「numpy를 알자」 「pandas 입문」 근처의 내용을 조합해, 자전의 데이터를 가시화해 봐 합니다.

사용하는 것은 도덴의 전기 가계부에서 취득한 우리 집의 월별 소비 전력량과 전기 요금

이것을 엑셀 파일로서 다운로드해 DataFrame화한 후, 단순히 barplot 해 보면, 이렇게 됩니다.
import pandas as pd
import seaborn as sns

data = pd.read_excel("Downloads/evaluation of solar power plant.xlsx",
    sheetname="(log) tepco")

sns.barplot(x="年月", y="使用量総計(kWh/月)", data=data)
sns.plt.savefig("temp.png")



그래서 어떻게 느끼는 그래프가 완성되었습니다.

월별 데이터를 연간으로 나란히 표시하는 것이 비교 검토하기 쉽지요. 요컨대 동전의 전기 가계부의 그래프 표시 형식입니다만…

그런 형태로 플롯하기 쉽게하기 위해, 원 데이터를 조금 가공합니다.

우선은 원 데이터의 내용을 파악.
import pandas as pd
import seaborn as sns
from pandas import Series, DataFrame

data = pd.read_excel("Downloads/evaluation of solar power plant.xlsx",
    sheetname="(log) tepco")

data.head(3)

    契約種別  事業所コード      年月  使用日数(日間)  請求金額()  使用量総計(kWh/)  使用量総計(kWh/)  \
0  従量電灯B     603  Oct-13        30     8084           291            10
1  従量電灯B     603  Nov-13        33     8648           312             9
2  従量電灯B     603  Dec-13        29     9275           334            12

data.tail(3)

     契約種別  事業所コード         年月  使用日数(日間)  請求金額()  使用量総計(kWh/)  使用量総計(kWh/)  \
27  従量電灯B     603     Jan-16        33     6970           279             8
28  従量電灯B     603     Feb-16        29     7560           304            10
29  従量電灯B     603  3/16/2016        30     6836           280             9

연월 열을 연도 열과 월 열로 분리합니다.
years = Series([date[-2:] for date in data["年月"]])
months = Series([date[:3] for date in data["年月"]])

하지만 여기서 문제가.

data[29]의 연월 열만 문자열 형식이 다릅니다. 「3/1」이 되어 있는 것은 왜다…

우선 다른 사람과 정렬합니다.
months[29] = "Mar"

months.tail(3)

27    Jan
28    Feb
29    Mar
dtype: object

원래 데이터 프레임에 새 열로 추가합니다.
data["年"] = years
data["月"] = months

data.tail(3)

     契約種別  事業所コード         年月  使用日数(日間)  請求金額()  使用量総計(kWh/)  使用量総計(kWh/)  \
27  従量電灯B     603     Jan-16        33     6970           279             8
28  従量電灯B     603     Feb-16        29     7560           304            10
29  従量電灯B     603  3/16/2016        30     6836           280             9

    単価(/kWh)   備考       
27         25  NaN  16  Jan
28         25  NaN  16  Feb
29         24  NaN  16  Mar

좋은 느낌입니다.

이 데이터를 hue 옵션에 연 열을 지정하면서 barplot으로 그립니다.
sns.barplot(x="月", y="使用量総計(kWh/月)", hue="年", data=data)
sns.plt.savefig("temp2.png")



이것으로 거의 목적은 달성할 수 있었습니다만, 2013년의 데이터가 10월부터 시작되고 있기 때문에, 스타트 지점이 중도반단입니다.

과감하게 2013년의 데이터는 삭제해, 다음에 청구 금액도 묘화해 봅니다.
data2 = data.drop([0,1,2])

data2.head(5)

    契約種別  事業所コード      年月  使用日数(日間)  請求金額()  使用量総計(kWh/)  使用量総計(kWh/)  \
3  従量電灯B     603  Jan-14        33    13183           462            14
4  従量電灯B     603  Feb-14        28    10432           372            13
5  従量電灯B     603  Mar-14        29    12773           443            15
6  従量電灯B     603  Apr-14        30    10227           356            12
7  従量電灯B     603  May-14        29     8478           286            10

sns.barplot(x="月", y="使用量総計(kWh/月)", hue="年", data=data2)
sns.plt.savefig("temp3.png")

sns.plt.close()

sns.barplot(x="月", y="請求金額(円)", hue="年", data=data2)
sns.plt.savefig("temp4.png")

이렇게 완성된 것이, 이하의 사용량 총계 추이 그래프.


이쪽은 청구 금액 추이 그래프.


이렇게 보면 2014년에 비해 2015, 2016년에는 전력 사용량이 상당히 줄어드는 것을 알 수 있네요.

지금까지.

강사 분의 돌리는 사람은 아닙니다만, 매우 알기 쉬운 강습 내용이라고 생각하므로, 흥미가 있는 분은 꼭 부디.

좋은 웹페이지 즐겨찾기