äžççã«ã¯ç°å¢ã«åªãã黿°èªåè»(EV)ãæ°è»è²©å£²ã®20%ãè¶ ããããã«ãªããŸããããæ¥æ¬ã§ã¯ããŸã ãŸã æ°ããŒã»ã³ãã«æºããªãããã§ãããããããªã·ã£ã¬ãªã«ãã§ã«è¡ããšEVãèŠãããæ°ãããããšãã声ãè³ã«ããŸãããããªæ¥åžžã®ãå°ããªçåãããPythonã§å®éã«æ€èšŒããŠã¿ãŸãããã
éœéåºçå¥ã®é»æ°èªåè»è²©å£²å°æ°ãã°ã©ãã«ããŠã¿ãã
ãã«ãã§ã§EVãèŠãããããšããåãããä»åãã«ãã§ãå¢ãããšé»æ°èªåè»ãæ®åããã®ã§ã¯ãªããããšãã仮説ãç«ãŠãŠã¿ãŸãããããã§ãEVãšã«ãã§ã«é¢ããã°ã©ããäœãã€ã€ããããæ¬åœãªã®ãPythonã§çžé¢é¢ä¿ã調ã¹ãŠã¿ãŸãããã
æåã«ãPythonã䜿ã£ãŠã黿°èªåè»ã®è²©å£²å°æ°ãã°ã©ãã«ããŠã¿ãŸããããçè ã®æ¢ãæ¹ãæªãã®ããéœéåºçå¥ã®å ·äœçãªé»æ°èªåè»ã®è²©å£²å°æ°ã®è¡šãèŠåœãããŸããã§ããããããããæ¬¡äžä»£èªåè»æ¯èã»ã³ã¿ãŒãããçµ±èš éœéåºçå¥è£å©é亀ä»ç¶æ³ 黿°èªåè»çããå ¬è¡šããŠããã®ã§ããã®è¡šãè²©å£²å°æ°ã ãšä»®å®ããŠæ€èšŒããŠã¿ãŸãããããã¡ãã®ãµã€ãã§ãããã¡ãããè£å©é亀ä»å°æ°ããšãè²©å£²å°æ°ãã¯å®å šã«äžèŽããããã§ã¯ãããŸããããåŸåãèŠãã«ã¯ååãªã®ã§ãä»£çææšãšã¿ãªããŠåæããŸãã
ãŸãã¯éœéåºçå¥ã®è¡šãCSVãã¡ã€ã«ã«ãªãããã«æŽåœ¢ããŠã¿ãŸããããHTMLãPDFã®è¡šãCSV圢åŒã«å€æããã«ã¯ãChatGPTãªã©ã®çæAIã䜿ããšäŸ¿å©ã§ããä»åã¯ãHTMLã®è¡šãã³ããŒããŠè²Œãä»ããŠãCSV圢åŒã«æŽåœ¢ããŠããšäŸé ŒããŸããããã ãã2009幎ãã2024幎ãŸã§ã®åèšããŒã¿ã®åãæœåºããCSV圢åŒãäœããŸããã
ãããŠã次ã®ãããªCSVãã¡ã€ã«ã«æåœ¢ãããã®ããã¡ãã«ã¢ããããŒãããŸããã
ããã§ã¯ããã®CSVãã¡ã€ã«ã䜿ã£ãŠãã°ã©ããæç»ããŠã¿ãŸããããã°ã©ãã®äœæã«ã¯ãGoogle Colabãå©çšããŸããColabã䜿ããšãGoogleã¢ã«ãŠã³ãããããã°ãç¡æã§Pythonã䜿ã£ãŠã°ã©ããäœæã§ããŸãã
Colabã®ããŒãžãéãããããããŒãããã¯ãæ°èŠäœæããã¿ã³ãæŒããŠãããŒãããã¯ãäœæããŸãããã
ãããŠããŸãã¯ãç»é¢äžæ¹ã«ãã空çœã®ã»ã«ã«äžèšã®ã³ãã³ãã貌ãä»ããŠããã®å·ŠåŽã«ããå®è¡ãã¿ã³ãæŒããŠå®è¡ããŸããããããã¯ãã°ã©ããæç»ããã©ã€ãã©ãªmatplotlibã®æ¥æ¬èªåãè¡ãããã±ãŒãžjapanize-matplotlibãã€ã³ã¹ããŒã«ããŠã黿°èªåè»ã®çµ±èšCSVãã¡ã€ã«ãããŠã³ããŒããããã®ã§ãã
! pip install japanize-matplotlib
! wget https://gist.github.com/kujirahand/66d2197594eaafd7bf7bd6ae87abd272/raw/dbcfe3925492e1a951574c924113838ee0fe01e5/toukei_ev.csv
ç¶ããŠã以äžã®ããã°ã©ã ãå®è¡ããŸããããã°ã©ããèŠããããªãããã«ãäžäœ10éœéåºçãšãã以å€ã®éœéåºçããŸãšããŠãœãŒãããŠã°ã©ããæç»ããããã«ããŸãã
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib # â æ¥æ¬èªå
# ãã¡ã€ã«èªã¿èŸŒã¿
df = pd.read_csv("toukei_ev.csv")
# ãœãŒãïŒéé ïŒ
df_sorted = df.sort_values("èš", ascending=False)
# äžäœ10ä»¶ãæœåº
top10 = df_sorted.head(10).copy()
# æ®ãïŒ11ãæäžäœïŒããŸãšããŠããã®ä»ããšããŠéèš
others_sum = df_sorted.iloc[10:]["èš"].sum()
# ããã®ä»ãè¡ã远å
top10.loc[len(top10)] = ["ãã®ä»", others_sum]
top10_sorted = top10.sort_values("èš", ascending=False)
# æç»
plt.figure(figsize=(10, 6))
plt.barh(top10_sorted["éœéåºç"], top10_sorted["èš"])
plt.xlabel("èš")
plt.ylabel("éœéåºç")
plt.title("éœéåºçå¥ã©ã³ãã³ã°ïŒäžäœ10ä»¶ + ãã®ä»ïŒ")
plt.gca().invert_yaxis() # äžäœãäžã«æ¥ãããã«å転
plt.tight_layout()
plt.show()
ããã°ã©ã ãå®è¡ãããšã次ã®ãããªã°ã©ããæç»ãããŸããã°ã©ããããã10ãšãã®ä»ã«ãŸãšããããšã§ãèŠèŠçã«æ¯èŒããããã°ã©ãã«ãªããŸãããçµæãã¿ããšããã¯ã人å£ãå€ãæ±äº¬ãäžçªå€ããæ¬¡ãã§ããã¯ã人å£ãå€ãå°åã®æç¥çãç¥å¥å·çã倧éªåºãçŠå³¶çãšç¶ããŸãã
人å£å人åœããã®é»æ°èªåè»ä¿æçã®ã°ã©ããæç»ããã
ã°ã©ããçºãããšã黿°èªåè»æ°ã人å£é ã«è¿ãããšã«æ°ä»ãããšã§ããããããã§ãéœéåºçã®äººå£ã§å²ã£ãå€ãèæ ®ããã°ã©ãã«ããŠã¿ãŸãããã
ç·åççµ±èšå±ãããäººå£æšèšïŒ2024幎ïŒä»€å6幎ïŒ10æ1æ¥çŸåšïŒãããExcelãã¡ã€ã«ãããŠã³ããŒãã§ããŸãããã®ããŒã¿ãå ã«ããŠãéœéåºçå¥äººå£ã®CSVãã¡ã€ã«ãäœããŸããããã¡ãã«ã¢ããããŒãããŸãããããã¯ãéœéåºçå¥ã®äººå£ïŒåäœïŒå人ïŒã®å€ã衚ã«ãããã®ã§ãã
ããã§ã¯ããã®CSVãã¡ã€ã«ã䜿ã£ãŠã人å£å人åœããã®é»æ°èªåè»ä¿æçã®ã°ã©ããæç»ããŠã¿ãŸãããã ãŸãã以äžã®ã³ãã³ããã»ã«ã«è²Œãä»ããŠå®è¡ãããšãCSVãã¡ã€ã«ãããŠã³ããŒãã§ããŸãã
! wget https://gist.github.com/kujirahand/41d832b25a5e1d7909cae41dbe6713ad/raw/0cf5ae87fe81ade61d62422d663592fe6ffb2522/pref_population.csv
ãããŠã以äžã®ããã°ã©ã ãå®è¡ããŠã°ã©ããæç»ããŸãããã
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib # â æ¥æ¬èªå
# CSVãã¡ã€ã«ãèªã¿èŸŒã
df_ev = pd.read_csv("toukei_ev.csv")
df_pop = pd.read_csv("pref_population.csv")
# éœéåºçãããŒã«ããŠCSVãã¡ã€ã«ãããŒãžãã
df = pd.merge(df_ev, df_pop, on="éœéåºç")
# 人å£å人ãããã®é»æ°èªåè»ä¿æçãèšç®
df["EV_per_1000"] = df["èš"] / df["人å£_å人"]
# ãœãŒãããŠçµæãåºå
sorted = df.sort_values("EV_per_1000", ascending=False)
print(sorted)
# ããã10ãåãåºã
df_top10 = df.sort_values("EV_per_1000", ascending=False).head(10)
# ã°ã©ãã«ãã
plt.figure(figsize=(10, 6))
plt.barh(df_top10["éœéåºç"], df_top10["EV_per_1000"])
plt.xlabel("人å£å人ããã EV ä¿ææ°")
plt.ylabel("éœéåºç")
plt.title("人å£å人ããã EV ä¿æç ããã10")
plt.gca().invert_yaxis()
plt.tight_layout()
plt.show()
å®è¡ãããšã次ã®ãããªã°ã©ãã衚瀺ãããŸãããªããšã黿°èªåè»ä¿æçã®ããããå²éçã§ãæç¥çã岡山çãäœè³çã倧åçãšç¶ããŸããã
ãããããæç¥ã»å²éã¯ãèªåè»ç£æ¥ãçããªå°åã§ããããããæç¥çã¯ããšã¿ã®æ¬ç€Ÿãå€§èŠæš¡å·¥å ŽãéäžããŠããŸãããå²éçããèªåè»ã®éšåã¡ãŒã«ãŒãå€ãã®ã§ãäŒæ¥ãç©æ¥µçã«é»æ°èªåè»ãå°å ¥ããŠãã圱é¿ãããã®ãããããŸããã
ãªãã黿°èªåè»ã®ä¿æçé ã«ãœãŒãããŠã衚ã§åºåããã«ã¯ãäžèšã®ã³ãŒããå®è¡ããŸãã
df.sort_values("EV_per_1000", ascending=False)
å ã»ã©ã®ã»ã«ã«ç¶ããŠãäžèšã®ã³ãŒããå®è¡ãããšã次ã®ãããªè¡šãäœæã§ããŸãã
ã«ãã§ã®å€ãéœéåºçã調ã¹ãã
ããŠã次ã«ä»åã®ä»®èª¬ãæ€èšŒããŠã¿ãŸãããããŸãã¯ã人å£åœããã®ã«ãã§ã®å€ãéœéåºçãç®åºããŠã¿ãŸããããåçåŽåçãã2021幎床ãŸã§ã®ã飲é£åºå¶æ¥æœèšæ°ã®æšç§»ãããå«è¶åºå¶æ¥æœèšæ°ã®æšç§»ãã®PDFããã¡ãã§å ¬è¡šããŠããŸãããããå ã«ããŠéœéåºçå¥ã«ãã§ã®æ°ã®CSVãäœæããŸããããCSVã«ãããã®ããã¡ãã«ã¢ããããŸããã
ã»ã«ã«ä»¥äžã®ã³ãŒãã貌ãä»ããŠå®è¡ããŠãCSVãã¡ã€ã«ãããŠã³ããŒãããŸãããã
! wget https://gist.githubusercontent.com/kujirahand/1ec0e67ebdad73ba63822323418b4f07/raw/057cc4d65b41643e9bbd8839f49e185ac28b5581/cafe.csv
ç¶ããŠãããã°ã©ã ãäœããŸãããã
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib # â æ¥æ¬èªå
# CSVãã¡ã€ã«ãèªã
df_cafe = pd.read_csv("cafe.csv")
df_pop = pd.read_csv("pref_population.csv")
# ããŒã¿ãããŒãž
df = pd.merge(df_cafe, df_pop, on="éœéåºç")
# 人å£åœããã®åºèæ°ãåºã
df["人å£1000人ãããåºèæ°"] = df["åºèæ°"] / df["人å£_å人"]
# ãœãŒãããŠäžäœ10äœãåºã
df_sorted = df.sort_values("人å£1000人ãããåºèæ°", ascending=False).head(10)
# ã°ã©ãæç»
plt.figure(figsize=(10,5))
plt.barh(df_sorted["éœéåºç"], df_sorted["人å£1000人ãããåºèæ°"])
plt.xlabel("人å£1000人ãããã®ã«ãã§åºèæ°")
plt.title("人å£1000人ãããã®ã«ãã§åºèæ°ïŒéœéåºçå¥ïŒ")
plt.gca().invert_yaxis()
plt.tight_layout()
plt.show()
å®è¡ãããšæ¬¡ã®ãããªã°ã©ããšãªããŸããã
çžé¢ã°ã©ããæç»ããŠã¿ãã
ããã§ãææã¯åºæããŸãããçžé¢é¢ä¿ããããã©ãã調ã¹ãŠã¿ãŸããããããã§çšæããã®ã¯ã人å£ãå人åœãã黿°èªåè»ä¿æçã»å人åœããã®ã«ãã§åºèæ°ã§ãã
ã°ã©ãã«æç»ããŠã¿ãŸãããã
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib # â æ¥æ¬èªå
# CSVãèªã¿èŸŒã
df_cafe = pd.read_csv("cafe.csv")
df_pop = pd.read_csv("pref_population.csv")
df = pd.read_csv("toukei_ev.csv")
# ããŒã¿ãããŒãžãã
df = df_ev.merge(df_pop, on="éœéåºç").merge(df_cafe, on="éœéåºç")
# ä¿æçãšäººå£åœããã®ã«ãã§ã®åºèæ°ãèšç®
df["EV_å人åœãã"] = df["èš"] / df["人å£_å人"]
df["ã«ãã§_å人åœãã"] = df["åºèæ°"] / df["人å£_å人"]
# ã°ã©ãããããããã
plt.figure(figsize=(8,6))
plt.scatter(df["ã«ãã§_å人åœãã"], df["EV_å人åœãã"])
plt.xlabel("ã«ãã§åºèæ°ïŒäººå£1000人ãããïŒ")
plt.ylabel("EVå°æ°ïŒäººå£1000人ãããïŒ")
plt.title("EVæ®åçãšã«ãã§å¯åºŠã®çžé¢")
plt.tight_layout()
plt.show()
df.head()
äžèšã®ããã°ã©ã ãå®è¡ãããšæ¬¡ã®ãããªã°ã©ãã衚瀺ãããŸãããããèŠããšãå·Šäžããå³äžãžãšããªããšãªãã黿°èªåè»å°æ°ãå¢ããã«ã€ããã«ãã§ã®åºèæ°ãå¢ããŠãããããªé°å²æ°ãåããã®ã§ã¯ãªãã§ããããã
ç¶ããŠããã¢ãœã³ã®çžé¢ä¿æ°ã䜿ã£ãŠã確èªããŠã¿ãŸããããããã¯ããããããã®ããŒã¿ãå¹³åããã©ãã ããºã¬ãŠãããããæãåãããŠããã®ãºã¬ãæ°å€ã«ãããã®ã§ãã
print(df["EV_å人åœãã"].corr(df["ã«ãã§_å人åœãã"]))
衚瀺ãããçµæã¯ãã€ãã-1ãã1ã®éã«ãªããŸãããå€ã0ã§ããã°çžé¢ç¡ãã1ãªãåŒ·ãæ£ã®çžé¢ã-1ãªãè² ã®çžé¢ãåãããŸãããããŠãå®è¡ããçµæã¯ãäžèšã®ããã«è¡šç€ºãããŸããã
0.507112014894722
äžè¬çã«ã¯ 0.3ã0.5 ã¯ãäžçšåºŠã®çžé¢ãã§ã0.5ã0.7 ã¯ããããã匷ãã®çžé¢ããšã¿ãªãããããšãå€ãã§ããã€ãŸãã0.507ãšããã®ã¯ãã»ã©ã»ã©ã®çžé¢ã¯ãããã©ã匷ãçžé¢ãšãŸã§ã¯èšããªãã¬ãã«ãšèšããŸãã
ãŸãšã
以äžãä»åã¯ããã«ãã§ãå¢ãããšé»æ°èªåè»ãæ®åããã®ãïŒããšãã仮説ãããšã«ãPythonã§çžé¢é¢ä¿ãæ€èšŒããŠã¿ãŸãããããã»ã©åŒ·ãé¢ä¿ãããããã§ã¯ãªãããã©ãå šãé¢ä¿ããªãããã§ããªããšããäºå®ãåãããŸããã
ãªããAIã«ãã®äºå®ãå°ããŠã¿ããšãçžé¢ä¿æ°ã0.5ã§ããããšããã黿°èªåè»ã®æ®åã«ã¯éœåžçãªã©ã€ãã¹ã¿ã€ã«ã倧ããé¢ä¿ããŠãããé«ã賌買åãšã€ã³ãã©ã®æŽåã倧ããé¢ä¿ããŠããã®ã§ã¯ãªãããšããã³ã¡ã³ãããããŸããã
ããŒã¿ãéããŠã°ã©ãã«ããã ãã§ãæ®æ®µã¯æ°ã¥ããªãé¢ä¿ãèŠããŠããŸããçè ã¯ãã®èŸºãã®å°éå®¶ã§ã¯ãªãã®ã§ãæ¬åœã®ãšããã¯åãããªããã®ã®ãPythonã§ãããããªããŒã¿ãã°ã©ãã«ããŠã¿ããšãæ®æ®µã¯æ°ã«ããŠã
ãªãã£ãé¢çœãäºå®ãèŠããããšãåãããŸãããããŒã¿ãèŠèŠåããŠä»®èª¬ãæ€èšŒããŠã¿ããšãæãã¬çºèŠãããã®ã§ãçãããå®è·µããŠã¿ããšè¯ãã§ãããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ããããŸã§50å以äžã®æè¡æžãå·çãããçŽè¿ã§ã¯ããå€§èŠæš¡èšèªã¢ãã«ã䜿ãããªãããã®ããã³ãããšã³ãžãã¢ãªã³ã°ã®æç§æž(ãã€ããåºç)ããPythonã§ã€ãããã¹ã¯ãããã¢ããª(ãœã·ã )ããå®è·µåã身ã«ã€ãã Pythonã®æç§æž 第2çããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããªã©ã







