PandasãšMatplotlibã§åŒ·åãªããŒã¿å¯èŠåãå®çŸããã®å æ¬çãªã¬ã€ãã§ã¯ãã·ãŒã ã¬ã¹ãªçµ±åãé«åºŠãªã«ã¹ã¿ãã€ãºãã°ããŒãã«ããŒã¿ããæŽå¯ã«å¯ãã ãããããäœæããããã®ãã¹ããã©ã¯ãã£ã¹ã解説ããŸãã
PandasããŒã¿å¯èŠå: Matplotlibçµ±åããã¹ã¿ãŒããã°ããŒãã«ãªæŽå¯ãåŸã
åºå€§ãªããŒã¿ã®æµ·ã§ã¯ãçã®æ°å€ã¯ãã°ãã°ããã®äžã«é ãããé åçãªç©èªãç§ããŠããŸããããŒã¿å¯èŠåã¯ç§ãã¡ã®çŸ éç€ãšãªããè€éãªããŒã¿ã»ãããçŽæçã§çè§£ããããã°ã©ãã£ãã¯è¡šçŸãžãšå€è²ãããŸããäžçäžã®ããŒã¿ãããã§ãã·ã§ãã«ã«ãšã£ãŠããã®é åã§äºå€§å·šé ãšããŠåèšããPythonã©ã€ãã©ãªããããŸããããã¯ãå ç¢ãªããŒã¿æäœã®ããã®Pandasãšãæ¯é¡ãªãããããæ©èœã®ããã®Matplotlibã§ããPandasã¯äŸ¿å©ãªçµã¿èŸŒã¿ããããæ©èœãæäŸããŸãããå¯èŠåã«ãããçã®åã¯ãMatplotlibãšã·ãŒã ã¬ã¹ã«çµ±åããããšãã«çºæ®ãããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãMatplotlibã®ãã现ããªå¶åŸ¡ãšPandasã®ããŒã¿æ§é ãæŽ»çšããæè¡ãšç§åŠã«ã€ããŠè§£èª¬ããããããã°ããŒãã«ãªèŽè¡ã«åœ±é¿åã®ããå¯èŠåãäœæã§ããããã«ããŸãã
倧éžéã®æ°åå€åãã¿ãŒã³ãåæããå Žåã§ãã倿§ãªåžå Žã®çµæžææšã远跡ããå Žåã§ããäžçäžã®æ¶è²»è è¡åã®å€åãçè§£ããå Žåã§ããPandasãšMatplotlibã®çžä¹å¹æã¯äžå¯æ¬ ã§ããããã«ãããå°ççããã³æåçå¢çãè¶ããŠãæç¢ºãã€æ£ç¢ºã«ã¡ãã»ãŒãžãäŒãããé«åºŠã«ã«ã¹ã¿ãã€ãºãããåºçå質ã®ãããããäœæããæè»æ§ãåŸãããŸãã
PandasãšMatplotlibã®çžä¹å¹æ: 匷åãªããŒãããŒã·ãã
ãã®æ žå¿ã«ãããŠãPandasã¯äž»ã«DataFrameããã³Seriesãªããžã§ã¯ããä»ããŠè¡šåœ¢åŒããŒã¿ã®åŠçã«åªããŠããŸãããããã®æ§é ã¯ãããŒã¿ã®ä¿åãšæäœã«å¹ççãªã ãã§ãªããMatplotlibã䟿å©ã«ã©ãããã匷åãªããããAPIãåããŠããŸããããã¯ãPandas DataFrameãŸãã¯Seriesã§.plot()ãåŒã³åºããšãMatplotlibãèå°è£ã§å¯èŠåãã¬ã³ããªã³ã°ããŠããããšãæå³ããŸãã
ã§ã¯ãPandasã«çµã¿èŸŒã¿ã®ããããæ©èœãããã®ã«ããªãMatplotlibãçŽæ¥äœ¿ãå¿ èŠãããã®ã§ããããïŒçãã¯å¶åŸ¡ãšã«ã¹ã¿ãã€ãºã«ãããŸããPandasã®ããããã¡ãœããã¯ãè¿ éã§äžè¬çãªå¯èŠåã®ããã«èšèšãããŠããŸããã¿ã€ãã«ãã©ãã«ãããããã®çš®é¡ãªã©ãåºæ¬çãªèª¿æŽã®ããã®å¹ åºããã©ã¡ãŒã¿ãæäŸããŸããããããã¢ãããŒã·ã§ã³ã®æ£ç¢ºãªé 眮ãããè€éãªãã«ãããã«ã¬ã€ã¢ãŠããã«ã¹ã¿ã ã«ã©ãŒãããããã©ã³ãã¬ã€ãã©ã€ã³ãæºããããã®éåžžã«å ·äœçãªã¹ã¿ã€ã«èšå®ãŸã§ãããããã®ããããåŽé¢ã埮調æŽããå¿ èŠãããå ŽåãMatplotlibã¯ãã¹ãŠã®ã°ã©ãã£ã«ã«èŠçŽ ãžã®çŽæ¥ã¢ã¯ã»ã¹ãåããåºç€ãšãªããšã³ãžã³ãæäŸããŸãããã®çµ±åã«ãããæ¬¡ã®ããšãå¯èœã«ãªããŸãã
- è¿
éãªãããã¿ã€ãäœæ: åæã®æ¢çŽ¢çããŒã¿åæã«ã¯ãPandasã®
.plot()ã䜿çšããŸãã - æŽç·Žãšã«ã¹ã¿ãã€ãº: Pandasã«ãã£ãŠçæãããMatplotlibãªããžã§ã¯ããååŸããè©³çŽ°ãªæ©èœåŒ·åã®ããã«é«åºŠãªMatplotlib颿°ãé©çšããŸãã
- è€éãªå¯èŠåã®äœæ: Pandasã®é«ã¬ãã«APIã ãã§ã¯æ±ãã«ããããŸãã¯äžå¯èœãªãè€éãªè€æ°è»žããããããªãŒããŒã¬ã€ãç¹æ®ãªã°ã©ãã¿ã€ããæ§ç¯ããŸãã
ãã®ããŒãããŒã·ããã¯ãèšåãæŽã£ãå·¥æ¿ãæã€ããšã«äŒŒãŠããŸããPandasã¯ã³ã³ããŒãã³ãïŒããŒã¿ïŒãè¿ éã«çµã¿ç«ãŠãMatplotlibã¯æçµçãªåäœïŒå¯èŠåïŒã磚ããè²ä»ããã宿ãããããã®ãã¹ãŠã®å°éããŒã«ãæäŸããŸããã°ããŒãã«ãªãããã§ãã·ã§ãã«ã«ãšã£ãŠãããã¯ãããŸããŸãªå°åã®ã¬ããŒãåºæºãé è²ã«å¯Ÿããæåçå奜ããŸãã¯ç¹å®ã®ããŒã¿è§£éã®ãã¥ã¢ã³ã¹ã«åãããŠå¯èŠåãé©å¿ãããèœåãæå³ããŸãã
ããŒã¿å¯èŠåç°å¢ã®ã»ããã¢ãã
ã³ãŒãã£ã³ã°ã«å ¥ãåã«ãPythonç°å¢ãæºåãããŠããããšã確èªããŸããããã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ãpipã䜿çšããŠPandasãšMatplotlibãç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸãã
pip install pandas matplotlib
ã€ã³ã¹ããŒã«åŸãéåžžãããŒã¿å¯èŠåã¹ã¯ãªãããããŒãããã¯ã¯ä»¥äžã®ã€ã³ããŒãã§éå§ããŸãã
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np # Often useful for generating sample data
Jupyter NotebookãIPythonã³ã³ãœãŒã«ã®ãããªã€ã³ã¿ã©ã¯ãã£ããªç°å¢ã§äœæ¥ããŠããå Žåã%matplotlib inlineïŒå€ãããŒãžã§ã³ãç¹å®ã®ã»ããã¢ããã®å ŽåïŒãå«ãããããŸãã¯åã«ããã©ã«ãã®åäœïŒéåžžã¯ã€ã³ã©ã€ã³ïŒãèš±å¯ããããšã§ããããããåºåã»ã«å
ã«çŽæ¥è¡šç€ºãããããã«ããŸããæ°ããMatplotlibããŒãžã§ã³ããã³Jupyterç°å¢ã§ã¯ãã€ã³ã©ã€ã³ãããããããã©ã«ãã§ããããããã®ããžãã¯ã³ãã³ãã¯å³å¯ã«ã¯å¿
èŠãªãããšãå€ãã§ãããç¥ã£ãŠããããšã¯è¯ãç¿æ
£ã§ãã
Pandasã®çµã¿èŸŒã¿ãããã: å¯èŠåãžã®ç¬¬äžæ©
Pandasã¯ãDataFrameãšSeriesã®äž¡æ¹ã§çŽæ¥å©çšã§ãã䟿å©ãª.plot()ã¡ãœãããæäŸããŠãããåæã®ããŒã¿æ¢çŽ¢ãéåžžã«å¹ççã«è¡ããŸãããã®ã¡ãœããã¯ãããŒã¿ã«åºã¥ããŠããã©ã«ãã®ããããã¿ã€ããã€ã³ããªãžã§ã³ãã«éžæããŸãããkindåŒæ°ã䜿çšããŠæç€ºçã«æå®ããããšãã§ããŸããããã€ãã®äžè¬çãªã¿ã€ããšåºæ¬çãªã«ã¹ã¿ãã€ãºãèŠãŠãããŸãããã
äžè¬çãªPandasããããã®çš®é¡ãšäŸ:
ãŸããããã€ãã®ååæã«ãããç°ãªãå°åããã®ä»®æ³çãªã°ããŒãã«å£²äžããŒã¿ã衚ããµã³ãã«DataFrameãäœæããŸãããã
data = {
'Quarter': ['Q1', 'Q2', 'Q3', 'Q4', 'Q1', 'Q2', 'Q3', 'Q4'],
'Year': [2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023],
'North America Sales (USD)': [150, 160, 175, 180, 190, 200, 210, 220],
'Europe Sales (USD)': [120, 130, 140, 135, 145, 155, 165, 170],
'Asia Sales (USD)': [100, 115, 130, 150, 160, 175, 190, 200],
'Africa Sales (USD)': [50, 55, 60, 65, 70, 75, 80, 85],
'Latin America Sales (USD)': [80, 85, 90, 95, 100, 105, 110, 115]
}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Year'].astype(str) + df['Quarter'].str.replace('Q', '-Q'))
df = df.set_index('Date')
print(df.head())
ãã®DataFrameã«ã¯datetimeã€ã³ããã¯ã¹ãèšå®ãããŠãããæç³»åããããã«æé©ã§ãã
1. æãç·ã°ã©ã (kind='line')
æéã®çµéã«äŒŽãåŸåã瀺ãã®ã«çæ³çã§ããã€ã³ããã¯ã¹ãdatetimeãªããžã§ã¯ãã®å ŽåãPandasã¯x軞ãèªåçã«åŠçããŸãã
df[['North America Sales (USD)', 'Europe Sales (USD)', 'Asia Sales (USD)']].plot(
kind='line',
figsize=(12, 6),
title='Regional Sales Performance Over Time (2022-2023)',
xlabel='Date',
ylabel='Sales (USD Millions)',
grid=True
)
plt.show()
æŽå¯: ããŸããŸãªå°åã«ãããæé·åŸåãçŽ æ©ã確èªã§ããŸããäŸãã°ãã¢ãžã¢ã¯ãšãŒããããšæ¯èŒããŠãããæ¥ãªæé·è»éã瀺ããŠããŸãã
2. æ£ã°ã©ã (kind='bar')
颿£çãªã«ããŽãªãæ¯èŒããã®ã«åªããŠããŸãã幎ããšã®å£²äžãéèšããŠã¿ãŸãããã
yearly_sales = df.groupby('Year')[['North America Sales (USD)', 'Europe Sales (USD)', 'Asia Sales (USD)', 'Africa Sales (USD)', 'Latin America Sales (USD)']].sum()
yearly_sales.plot(
kind='bar',
figsize=(14, 7),
title='Total Yearly Sales by Region (2022 vs 2023)',
ylabel='Total Sales (USD Millions)',
rot=45, # Rotate x-axis labels for better readability
width=0.8
)
plt.tight_layout() # Adjust layout to prevent labels from overlapping
plt.show()
æŽå¯: ãã®æ£ã°ã©ãã¯ãåå°åã®ç·å£²äžã®åå¹Žæ¯æé·ãæç¢ºã«èŠèŠåããå幎ã®å°åéã®çŽæ¥æ¯èŒãå¯èœã«ããŸãã
3. ãã¹ãã°ã©ã (kind='hist')
åäžã®æ°å€å€æ°ã®ååžãå¯èŠåããããã«äœ¿çšãããŸãã
# Let's create some dummy data for "Customer Satisfaction Scores" (out of 100) from two global regions
np.random.seed(42)
customer_satisfaction_na = np.random.normal(loc=85, scale=10, size=500)
customer_satisfaction_eu = np.random.normal(loc=78, scale=12, size=500)
satisfaction_df = pd.DataFrame({
'North America': customer_satisfaction_na,
'Europe': customer_satisfaction_eu
})
satisfaction_df.plot(
kind='hist',
bins=20, # Number of bins
alpha=0.7, # Transparency
figsize=(10, 6),
title='Distribution of Customer Satisfaction Scores by Region',
xlabel='Satisfaction Score',
ylabel='Frequency',
grid=True,
legend=True
)
plt.show()
æŽå¯: ãã¹ãã°ã©ã ã¯ãæºè¶³åºŠã¹ã³ã¢ã®åºãããšäžå¿åŸåãæ¯èŒããã®ã«åœ¹ç«ã¡ãŸãããã®åæäŸã§ã¯ãåç±³ã®ã¹ã³ã¢ã¯ãšãŒããããããå šäœçã«é«ããåºããã«ããããã§ãã
4. æ£åžå³ (kind='scatter')
2ã€ã®æ°å€å€æ°éã®é¢ä¿ã瀺ãã®ã«åªããŠããŸãã
# Let's imagine we have data on 'Marketing Spend' and 'Sales' for various product launches globally
scatter_data = {
'Marketing Spend (USD)': np.random.uniform(50, 500, 100),
'Sales (USD)': np.random.uniform(100, 1000, 100),
'Region': np.random.choice(['NA', 'EU', 'Asia', 'Africa', 'LA'], 100)
}
scatter_df = pd.DataFrame(scatter_data)
# Introduce some correlation
scatter_df['Sales (USD)'] = scatter_df['Sales (USD)'] + scatter_df['Marketing Spend (USD)'] * 1.5
scatter_df.plot(
kind='scatter',
x='Marketing Spend (USD)',
y='Sales (USD)',
figsize=(10, 6),
title='Global Marketing Spend vs. Sales Performance',
s=scatter_df['Marketing Spend (USD)'] / 5, # Marker size proportional to spend
c='blue', # Color of markers
alpha=0.6,
grid=True
)
plt.show()
æŽå¯: ãã®ããããã¯æœåšçãªçžé¢é¢ä¿ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããããŒã±ãã£ã³ã°æ¯åºãšå£²äžã®éã«æ£ã®çžé¢é¢ä¿ã芳å¯ãããããŒã±ãã£ã³ã°ãžã®æè³ãé«ãã»ã©äžè¬çã«å£²äžãé«ããªãããšã瀺ããŠããŸãã
5. ç®±ã²ãå³ (kind='box')
æ°å€ããŒã¿ã®ååžãèŠèŠåããå€ãå€ã匷調ããŸããç¹ã«ãã«ããŽãªéã®ååžãæ¯èŒããã®ã«åœ¹ç«ã¡ãŸãã
# Let's use our satisfaction_df for box plots
satisfaction_df.plot(
kind='box',
figsize=(8, 6),
title='Customer Satisfaction Score Distribution by Region',
ylabel='Satisfaction Score',
grid=True
)
plt.show()
æŽå¯: ç®±ã²ãå³ã¯ãåå°åã®æºè¶³åºŠã¹ã³ã¢ã®äžå€®å€ãååäœç¯å²ïŒIQRïŒãããã³æœåšçãªå€ãå€ãæç¢ºã«ç€ºããäžå¿åŸåãšå€åæ§ãç°¡åã«æ¯èŒã§ããããã«ããŸãã
6. é¢ã°ã©ã (kind='area')
æãç·ã°ã©ãã«äŒŒãŠããŸãããç·ã®äžã®é åãå¡ãã€ã¶ãããŠããã环ç©åèšãæéã®çµéã«äŒŽã倧ããããç¹ã«ç©ã¿éããŠç€ºãã®ã«åœ¹ç«ã¡ãŸãã
# Let's consider monthly energy consumption (in KWh) for a company's global operations
energy_data = {
'Month': pd.to_datetime(pd.date_range(start='2023-01', periods=12, freq='M')),
'North America (KWh)': np.random.randint(1000, 1500, 12) + np.arange(12)*20,
'Europe (KWh)': np.random.randint(800, 1200, 12) + np.arange(12)*15,
'Asia (KWh)': np.random.randint(1200, 1800, 12) + np.arange(12)*25,
}
energy_df = pd.DataFrame(energy_data).set_index('Month')
energy_df.plot(
kind='area',
stacked=True, # Stack the areas
figsize=(12, 6),
title='Monthly Global Energy Consumption by Region (KWh)',
xlabel='Month',
ylabel='Total Energy Consumption (KWh)',
alpha=0.8,
grid=True
)
plt.show()
æŽå¯: é¢ã°ã©ããç¹ã«ç©ã¿éãé¢ã°ã©ãã¯ãåå°åãæéã®çµéãšãšãã«ç·ãšãã«ã®ãŒæ¶è²»ã«ã©ã®ããã«è²¢ç®ããŠããããèŠèŠçã«è¡šçŸããå šäœããã³åã ã®å°åã®æ¶è²»åŸåãæç¢ºã«ããŸãã
Pandasã®çµã¿èŸŒã¿ããããã¯ãåæã®æ¢çŽ¢ãæšæºçãªå¯èŠåãçæããã®ã«éåžžã«åŒ·åã§ããéèŠãªç¹ã¯ããããã®ã¡ãœãããMatplotlib AxesïŒããã³å Žåã«ãã£ãŠã¯FigureïŒãªããžã§ã¯ããè¿ããããåžžã«PandasãããããååŸããMatplotlibã®çŽæ¥åŒã³åºãã䜿çšããŠããã«ã«ã¹ã¿ãã€ãºã§ããããšã§ãã
Matplotlibã§ããã«æ·±ãæãäžããé«åºŠãªã«ã¹ã¿ãã€ãº
Pandasã®.plot()ãå©äŸ¿æ§ãæäŸããäžæ¹ã§ãMatplotlibã¯å¯èŠåã«ãããããããããžãšãã«ãã®ããã®ãã©ã€ããŒãæäŸããŸãã广çã«çµ±åããã«ã¯ãMatplotlibã®ãªããžã§ã¯ãéå±€ãããªãã¡FigureãšAxesãçè§£ããããšãéèŠã§ãã
- Figure: ããã¯ãã¹ãŠã®ããããèŠçŽ ã®ãããã¬ãã«ã³ã³ããã§ããããããã衚瀺ããããã£ã³ãã¹å šäœãŸãã¯ãŠã£ã³ããŠãšèãããšè¯ãã§ããããFigureã¯1ã€ä»¥äžã®Axesãå«ãããšãã§ããŸãã
- Axes: ããã§å®éã®ãããããè¡ãããŸããããã¯ããŒã¿ç©ºéãæã€ç»åé åã§ããFigureã¯è€æ°ã®Axesãæã€ããšãã§ãããããããç¬èªã®x軞ãy軞ãã¿ã€ãã«ãã©ãã«ãæã¡ãŸãããAxesããšãaxisãïŒx軞ãy軞ïŒãæ··åããªãã§ãã ããããAxesãã¯åº§æšç³»ã®æèã§ã¯ãAxisãã®è€æ°åœ¢ã§ãããMatplotlibã§ã¯ãAxesããªããžã§ã¯ãã¯ããããé åå šäœãæããŸãã
df.plot()ãåŒã³åºããšãéåžžãAxesãªããžã§ã¯ãïŒãŸãã¯è€æ°ã®ãµããããããäœæãããå Žåã¯Axesãªããžã§ã¯ãã®é
åïŒãè¿ãããŸãããã®ãªããžã§ã¯ãããã£ããã£ãããã®ã¡ãœããã䜿çšããŠããããã倿Žã§ããŸãã
PandasããããããMatplotlibãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ãã
å°åå¥å£²äžæãç·ã°ã©ããå蚪ããMatplotlibã®çŽæ¥åŒã³åºãã䜿çšããŠããã匷åããŸãããã
# Generate the Pandas plot and capture the Axes object
ax = df[['North America Sales (USD)', 'Europe Sales (USD)', 'Asia Sales (USD)']].plot(
kind='line',
figsize=(12, 7),
title='Regional Sales Performance Over Time (2022-2023)',
xlabel='Date',
ylabel='Sales (USD Millions)',
grid=True
)
# Now, use Matplotlib's Axes methods for further customization
ax.set_facecolor('#f0f0f0') # Light grey background for the plotting area
ax.spines['top'].set_visible(False) # Remove top spine
ax.spines['right'].set_visible(False) # Remove right spine
ax.tick_params(axis='x', rotation=30) # Rotate x-tick labels
ax.tick_params(axis='y', labelcolor='darkgreen') # Change y-tick label color
# Add a specific annotation for a significant point
# Let's say we had a major marketing campaign start in Q3 2023 in Asia
asia_q3_2023_sales = df.loc['2023-09-30', 'Asia Sales (USD)'] # Assuming Q3 ends Sep 30
ax.annotate(f'Asia Campaign: {asia_q3_2023_sales:.0f}M USD',
xy=('2023-09-30', asia_q3_2023_sales),
xytext=('2023-05-01', asia_q3_2023_sales + 30), # Offset text from point
arrowprops=dict(facecolor='black', shrink=0.05),
fontsize=10,
color='darkred',
bbox=dict(boxstyle="round,pad=0.3", fc="yellow", ec="darkgrey", lw=0.5, alpha=0.9)) # Double quotes here need escaping
# Improve legend placement
ax.legend(title='Region', bbox_to_anchor=(1.05, 1), loc='upper left')
# Adjust layout to make room for the legend
plt.tight_layout(rect=[0, 0, 0.85, 1])
# Save the figure with high resolution, suitable for global reports
plt.savefig('regional_sales_performance_enhanced.png', dpi=300, bbox_inches='tight')
plt.show()
æèŠ: axãªããžã§ã¯ãããã£ããã£ããããšã§ãã¹ã¿ã€ãªã³ã°ãã¢ãããŒã·ã§ã³ã®è¿œå ãå¡äŸãšå
šäœçãªã¬ã€ã¢ãŠãã®åŸ®èª¿æŽã«å¯ŸããŠãã现ããªå¶åŸ¡ãå¯èœã«ãªãããããããããæ
å ±è±å¯ã§åºçå¯èœãªãã®ã«ãªããŸããããŸããçµæãå
±æããããã®éèŠãªã¹ãããã§ãããå³ãæç€ºçã«ä¿åããŸããã
plt.subplots()ã§è€æ°ã®ãµããããããäœæãã
ããŒã¿ã®ç°ãªãåŽé¢ã䞊ã¹ãŠæ¯èŒããã«ã¯ããµããããããéåžžã«åœ¹ç«ã¡ãŸããMatplotlibã®plt.subplots()颿°ã¯ããã«æé©ã§ãFigureãªããžã§ã¯ããšAxesãªããžã§ã¯ãã®é
åã®äž¡æ¹ãè¿ããŸãã
# Let's visualize the distribution of sales for North America and Europe separately
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(14, 6))
# Plot North America sales distribution on the first Axes
df['North America Sales (USD)'].plot(
kind='hist',
ax=axes[0],
bins=10,
alpha=0.7,
color='skyblue',
edgecolor='black'
)
axes[0].set_title('North America Sales Distribution')
axes[0].set_xlabel('Sales (USD Millions)')
axes[0].set_ylabel('Frequency')
axes[0].grid(axis='y', linestyle='--', alpha=0.7)
# Plot Europe sales distribution on the second Axes
df['Europe Sales (USD)'].plot(
kind='hist',
ax=axes[1],
bins=10,
alpha=0.7,
color='lightcoral',
edgecolor='black'
)
axes[1].set_title('Europe Sales Distribution')
axes[1].set_xlabel('Sales (USD Millions)')
axes[1].set_ylabel('') # Remove redundant Y-label as it's shared
axes[1].grid(axis='y', linestyle='--', alpha=0.7)
fig.suptitle('Sales Distribution Comparison (2022-2023)', fontsize=16) # Overall figure title
plt.tight_layout(rect=[0, 0.03, 1, 0.95]) # Adjust layout for suptitle
plt.show()
æèŠ: ããã§ã¯ãaxåŒæ°ã䜿çšããŠãåAxesãªããžã§ã¯ããPandasã®plot()ã¡ãœããã«æç€ºçã«æž¡ããŸããããã®ææ³ã«ãããåãããããå³å
ã®ã©ãã«é
眮ãããããå®å
šã«å¶åŸ¡ã§ããè€éãªã¬ã€ã¢ãŠããæ¯èŒãå¯èœã«ãªããŸãã
Matplotlibã®é«åºŠãªã«ã¹ã¿ãã€ãºæè¡:
- ã«ã©ãŒããã (
cmap): ããŒãããããè²ã§è¡šçŸããã3次å ãæã€æ£åžå³ããŸãã¯ãããã§ãã·ã§ãã«ãªé è²ãããããã«è¿œå ããããã«ãMatplotlibã¯ãè²èŠç°åžžãå«ãã°ããŒãã«ãªã¢ã¯ã»ã·ããªãã£ã«åªããviridisãplasmaãcividisã®ãããªç¥èŠçã«åäžãªã«ã©ãŒããããå¹ åºãæäŸããŠããŸãã - ç®çããšã©ãã«ã®ã«ã¹ã¿ãã€ãº: åºæ¬çãªå転ãè¶ ããŠãç®çãã®é »åºŠãå¶åŸ¡ããããã©ãã«ããã©ãŒããããããïŒäŸïŒé貚èšå·ãããŒã»ã³ãèšå·ïŒãæ¥ä»çšã®ã«ã¹ã¿ã ãã©ãŒããã¿ãŒã䜿çšãããããããšãã§ããŸãã
- 軞ã®å
±æ: é¢é£ããããŒã¿ãããããããå Žåã
sharex=TrueãŸãã¯sharey=Trueãplt.subplots()ã§è»žãæããããšãã§ããæ¯èŒã容æã«ãªããŸããããã¯ç¹ã«ã°ããŒãã«ãªæç³»åããŒã¿ã«åœ¹ç«ã¡ãŸãã - ã¹ã¿ã€ã«ã·ãŒã: Matplotlibã«ã¯ãäºåå®çŸ©ãããã¹ã¿ã€ã«ã·ãŒãïŒäŸïŒ
plt.style.use('ggplot')ãplt.style.use('seaborn-v0_8')ïŒãä»å±ããŠããŸãããããã䜿çšãããšãããããã«äžè²«æ§ã®ãããããã§ãã·ã§ãã«ãªå€èгããã°ããäžããããšãã§ããŸããã«ã¹ã¿ã ã¹ã¿ã€ã«ã·ãŒããäœæããããšãå¯èœã§ãã - å¡äŸ: å¡äŸã®é 眮ã埮調æŽããã¿ã€ãã«ã远å ãããã©ã³ããµã€ãºã倿Žããåæ°ã管çããŸãã
- ããã¹ããšã¢ãããŒã·ã§ã³:
ax.text()ã䜿çšããŠããããäžã®ä»»æã®å Žæã«ä»»æã®ããã¹ãã远å ããããax.annotate()ã䜿çšããŠç¢å°ãšèª¬æããã¹ãã§ç¹å®ã®ããŒã¿ãã€ã³ãã匷調衚瀺ãããã§ããŸãã
Matplotlibã®æè»æ§ãšã¯ãå¯èŠåãæ³åã§ãããªãããããããããäœæã§ãããšããããšã§ããPandasã¯æåã®å¢ããæäŸããMatplotlibã¯ããªãã®ããžã§ã³ãå®çŸããããã®ç²Ÿå¯ãªãšã³ãžãã¢ãªã³ã°ãæäŸããŸãã
å®çšçãªãŠãŒã¹ã±ãŒã¹ãšã°ããŒãã«ããŒã¿ã®äŸ
ãã®çµ±åããå®çšçã§äžççã«é¢é£æ§ã®ããããŒã¿å¯èŠåã·ããªãªã«ã©ã®ããã«å€æãããããæ¢ã£ãŠã¿ãŸãããã
1. ã°ããŒãã«çµæžææšåæ: 倧éžéã®GDPæé·ç
ããŸããŸãªå°åã®åœå ç·çç£ïŒGDPïŒæé·çãåæããããšãæ³åããŠã¿ãŠãã ãããPandasãšMatplotlibã®çµã¿åããã§DataFrameãäœæãããããæç¢ºã«èŠèŠåã§ããŸãã
# Sample data: Quarterly GDP growth rates (percentage) for different continents
gdp_data = {
'Quarter': pd.to_datetime(pd.date_range(start='2021-01', periods=12, freq='Q')),
'North America GDP Growth (%)': np.random.uniform(0.5, 2.0, 12),
'Europe GDP Growth (%)': np.random.uniform(0.2, 1.8, 12),
'Asia GDP Growth (%)': np.random.uniform(1.0, 3.5, 12),
'Africa GDP Growth (%)': np.random.uniform(0.0, 2.5, 12),
'Latin America GDP Growth (%)': np.random.uniform(-0.5, 2.0, 12)
}
gdp_df = pd.DataFrame(gdp_data).set_index('Quarter')
fig, ax = plt.subplots(figsize=(15, 8))
# Pandas plot for the initial line chart
gdp_df.plot(
kind='line',
ax=ax,
marker='o', # Add markers for data points
linewidth=2,
alpha=0.8
)
# Matplotlib customizations
ax.set_title('Quarterly GDP Growth Rates by Continent (2021-2023)', fontsize=16, fontweight='bold')
ax.set_xlabel('Quarter', fontsize=12)
ax.set_ylabel('GDP Growth (%)', fontsize=12)
ax.grid(True, linestyle='--', alpha=0.6)
ax.axhline(y=0, color='red', linestyle=':', linewidth=1.5, label='Zero Growth Line') # Add a zero line
ax.legend(title='Continent', loc='upper left', bbox_to_anchor=(1, 1))
# Highlight a specific period (e.g., a global economic downturn period)
ax.axvspan(pd.to_datetime('2022-04-01'), pd.to_datetime('2022-09-30'), color='gray', alpha=0.2, label='Economic Slowdown Period')
# Customizing Y-axis tick labels to add percentage sign
from matplotlib.ticker import PercentFormatter
ax.yaxis.set_major_formatter(PercentFormatter())
plt.tight_layout(rect=[0, 0, 0.88, 1]) # Adjust layout for legend
plt.show()
ã°ããŒãã«ãªæŽå¯: ãã®ããããã¯ã倧éžéã®ç°ãªãæé·è»éãæç¢ºã«èŠèŠåããæé·ãéåãããå埩åããã£ããããæéã匷調ããŸãã远å ããããŒãæé·ç·ãšåŒ·èª¿ãããæéã¯ãäžçäžã®çµæžã¢ããªã¹ãã«ãšã£ãŠéèŠãªã³ã³ããã¹ããæäŸããŸãã
2. 人å£ååž: ç°ãªãåœã®å¹Žéœ¢ãã©ããã
幎霢ãã©ãããã¯è€éã«ãªãå¯èœæ§ããããŸããã人å£ã»ã°ã¡ã³ãã瀺ãç©ã¿éãæ£ã°ã©ãã«åçŽåããŸããããããã¯äººå£çµ±èšåæã§ããããããŒãºã§ãã
# Sample data: Population distribution by age group for two countries
population_data = {
'Age Group': ['0-14', '15-29', '30-44', '45-59', '60-74', '75+'],
'Country A (Millions)': [20, 25, 30, 22, 15, 8],
'Country B (Millions)': [15, 20, 25, 28, 20, 12]
}
pop_df = pd.DataFrame(population_data).set_index('Age Group')
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(16, 7), sharey=True) # Share Y-axis for easier comparison
# Plot for Country A
pop_df[['Country A (Millions)']].plot(
kind='barh', # Horizontal bar chart
ax=axes[0],
color='skyblue',
edgecolor='black',
legend=False
)
axes[0].set_title('Country A Population Distribution', fontsize=14)
axes[0].set_xlabel('Population (Millions)', fontsize=12)
axes[0].set_ylabel('Age Group', fontsize=12)
axes[0].grid(axis='x', linestyle='--', alpha=0.7)
axes[0].invert_xaxis() # Make bars extend left
# Plot for Country B
pop_df[['Country B (Millions)']].plot(
kind='barh',
ax=axes[1],
color='lightcoral',
edgecolor='black',
legend=False
)
axes[1].set_title('Country B Population Distribution', fontsize=14)
axes[1].set_xlabel('Population (Millions)', fontsize=12)
axes[1].set_ylabel('') # Remove redundant Y-label as it's shared
axes[1].grid(axis='x', linestyle='--', alpha=0.7)
fig.suptitle('Comparative Population Age Distribution (Global Example)', fontsize=16, fontweight='bold')
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
ã°ããŒãã«ãªæŽå¯: å
±æY軞ã䜿çšããããããã䞊眮ããããšã§ãç°ãªãåœã®å¹Žéœ¢æ§é ãå¹ççã«æ¯èŒã§ããŸããããã¯ãåœéçãªæ¿ç決å®ãåžå Žåæã瀟äŒèšç»ã«ãšã£ãŠäžå¯æ¬ ã§ããæåã®ããããã®invert_xaxis()ã¯ãçåŽãäŒçµ±çãªå¹Žéœ¢ãã©ãããã®å¯èŠåãæš¡å£ããŠããããšã«æ³šç®ããŠãã ããã
3. ç°å¢ããŒã¿: äžäººåœããã®CO2æåºéãšGDP
çµæžçç£ãšç°å¢åœ±é¿ã®é¢ä¿ã調æ»ããããšã¯ãäžççã«éèŠãªé¢å¿äºã§ããæ£åžå³ã¯ããã«æé©ã§ãã
# Sample data: Hypothetical CO2 emissions and GDP per capita for various countries
# Data for 20 global sample countries (simplified)
countries = ['USA', 'CHN', 'IND', 'GBR', 'DEU', 'FRA', 'JPN', 'BRA', 'CAN', 'AUS',
'MEX', 'IDN', 'NGA', 'EGY', 'ZAF', 'ARG', 'KOR', 'ITA', 'ESP', 'RUS']
np.random.seed(42)
co2_emissions = np.random.uniform(2, 20, len(countries)) * 10 # in metric tons per capita
gdp_per_capita = np.random.uniform(5000, 70000, len(countries))
# Introduce a positive correlation
co2_emissions = co2_emissions + (gdp_per_capita / 5000) * 0.5
co2_emissions = np.clip(co2_emissions, 5, 25) # Ensure reasonable range
env_df = pd.DataFrame({
'Country': countries,
'CO2 Emissions (metric tons per capita)': co2_emissions,
'GDP per Capita (USD)': gdp_per_capita
})
fig, ax = plt.subplots(figsize=(12, 8))
# Pandas scatter plot
env_df.plot(
kind='scatter',
x='GDP per Capita (USD)',
y='CO2 Emissions (metric tons per capita)',
ax=ax,
s=env_df['GDP per Capita (USD)'] / 500, # Marker size based on GDP (as a proxy for economic scale)
alpha=0.7,
edgecolor='black',
color='darkgreen'
)
# Matplotlib customizations
ax.set_title('CO2 Emissions vs. GDP per Capita for Global Economies', fontsize=16, fontweight='bold')
ax.set_xlabel('GDP per Capita (USD)', fontsize=12)
ax.set_ylabel('CO2 Emissions (metric tons per capita)', fontsize=12)
ax.grid(True, linestyle=':', alpha=0.5)
# Add country labels for specific points
for i, country in enumerate(env_df['Country']):
if country in ['USA', 'CHN', 'IND', 'DEU', 'NGA']: # Label a few interesting countries
ax.text(env_df['GDP per Capita (USD)'].iloc[i] + 500, # Offset x
env_df['CO2 Emissions (metric tons per capita)'].iloc[i] + 0.5, # Offset y
country,
fontsize=9,
color='darkblue',
fontweight='bold')
plt.tight_layout()
plt.show()
ã°ããŒãã«ãªæŽå¯: ãã®æ£åžå³ã¯ãçµæžçºå±ãšç°å¢åœ±é¿ã«é¢ããŠé¡äŒŒã®ãããã¡ã€ã«ãæã€åœã ã®åŸåãå€ãå€ãããã³ã°ã«ãŒããç¹å®ããã®ã«åœ¹ç«ã¡ãŸããç¹å®ã®åœã«ã¢ãããŒã·ã§ã³ãä»ããããšã§ãã°ããŒãã«ãªèŽè¡ãå°åããšã®å€åãçè§£ããããã®éèŠãªã³ã³ããã¹ãã远å ãããŸãã
ãããã®äŸã¯ãããŒã¿æºåãšåæããããã®ããã®Pandasãšãæ·±ãã«ã¹ã¿ãã€ãºã®ããã®Matplotlibã®çµã¿åããããè€éãªã°ããŒãã«ããŒã¿ã·ããªãªãåæããã³å¯èŠåããããã®å€çšéãªããŒã«ããããã©ã®ããã«æäŸãããã瀺ããŠããŸãã
广çãªããŒã¿å¯èŠåã®ããã®ãã¹ããã©ã¯ãã£ã¹
çŸãããããããäœæããããšãšã广çãªãããããäœæããããšã¯å¥ç©ã§ããç¹ã«ã°ããŒãã«ãªèŽè¡ã念é ã«çœ®ãããããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã以äžã«ç€ºããŸãã
-
æçããšã·ã³ãã«ã:
- cluttered ãé¿ãã: ãã£ãŒãäžã®ãã¹ãŠã®èŠçŽ ã¯ç®çãæããã¹ãã§ããäžèŠãªã°ãªããç·ãéå°ãªã©ãã«ãåé·ãªå¡äŸã¯åé€ããŠãã ããã
- çŽæ¥ã©ããªã³ã°: ç¹ã«ããã€ãã®ç°ãªãç³»åã®å ŽåãããŒã¿ãã€ã³ããçŽæ¥ã©ããªã³ã°ããæ¹ããå¡äŸã ãã«é Œããããæç¢ºãªå ŽåããããŸãã
- äžè²«ããã¹ã±ãŒã«: è€æ°ã®ãã£ãŒããæ¯èŒããå Žåãã¹ã±ãŒã«ã®éããã¡ãã»ãŒãžã®äžéšã§ããå Žåãé€ãã軞ã®ã¹ã±ãŒã«ãäžè²«ããŠããããšã確èªããŠãã ããã
-
é©åãªããããã¿ã€ãã®éžæ:
- æç³»åã®åŸå: æãç·ã°ã©ããé¢ã°ã©ãã
- ã«ããŽãªã®æ¯èŒ: æ£ã°ã©ããç©ã¿éãæ£ã°ã©ãã
- ååž: ãã¹ãã°ã©ã ãç®±ã²ãå³ããã€ãªãªã³ããããã
- é¢ä¿æ§: æ£åžå³ãããŒããããã
äžé©åã«éžæãããããããã¿ã€ãã¯ãã¹ã¿ã€ã«ãã©ãã»ã©åªããŠããŠããããŒã¿ã®ç©èªãäžæçã«ããå¯èœæ§ããããŸãã
-
ã«ã©ãŒãã¬ãã: ã¢ã¯ã»ã·ããªãã£ãšæåçäžç«æ§:
- è²èŠç°åžž: è²èŠç°åžžã«é
æ
®ãããã¬ããïŒäŸïŒMatplotlibã®
viridisãcividisãplasmaïŒã䜿çšããŠãã ãããéèŠãªåºå¥ã«ã¯èµ€ãšç·ã®çµã¿åãããé¿ããŠãã ããã - æåçãªæå³åã: è²ã¯æåã«ãã£ãŠç°ãªãæå³ãæã¡ãŸããèµ€ã¯ããæåã§ã¯å±éºãæå³ããå¥ã®æåã§ã¯å¹žéãæå³ãããããããŸããã倿§ãªèŽè¡ã«æç€ºããå Žåã¯ãäžç«çãªãã¬ãããéžæããããè²ã®éžæãæç€ºçã«èª¬æããŠãã ããã
- ç®çãæã£ã䜿çš: è²ã¯çŸçé åã®ããã ãã§ãªãã匷調ãåé¡ããŸãã¯å€§ããã瀺ãããã«äœ¿çšããŠãã ããã
- è²èŠç°åžž: è²èŠç°åžžã«é
æ
®ãããã¬ããïŒäŸïŒMatplotlibã®
-
ã¢ãããŒã·ã§ã³ãšããã¹ã: éèŠãªæŽå¯ã®åŒ·èª¿:
- èŽè¡ã«ç©èªãæ¢ãããå¿ èŠã¯ãããŸãããã¿ã€ãã«ããµãã¿ã€ãã«ã軞ã©ãã«ãããã³ã¢ãããŒã·ã§ã³ã䜿çšããŠãè§£éãå°ããŸãã
- èŽè¡ã倿§ã§ããå Žåã¯ãé åèªãå°éçšèªã説æããŸãã
- ãã£ãŒãäžãŸãã¯ãã£ãã·ã§ã³ã«ãå°ããªèŠçŽããäž»èŠãªãã€ã³ãããçŽæ¥è¿œå ããããšãæ€èšããŠãã ããã
-
ã°ããŒãã«ãªèŽè¡ãžã®å¯Ÿå¿:
- åäœãšåœ¢åŒ: åäœãæç€ºçã«æå®ããŸãïŒäŸïŒãçŸäžUSDãããKWhãããäžäººåœããã®ã¡ãŒãã«ãã³ãïŒãæ°å€åœ¢åŒã«ã€ããŠã¯ãèªã¿ãããã®ããã«åã®åºåãïŒäŸïŒ1,000,000ïŒã䜿çšããããå°åéã§ç°ãªãå ŽåãããçŸäž/ååã®åœ¢åŒã䜿çšããããšãæ€èšããŠãã ããã
- ã¿ã€ã ãŸãŒã³: æç³»åããŒã¿ãæ±ãå Žåãææ§ããé¿ããããã«å¿ èŠã«å¿ããŠã¿ã€ã ãŸãŒã³ãæå®ããŸãã
- èšèª: ããã°ã¯è±èªã§ããããããã¹ãŠã®ã©ãã«ãšã¢ãããŒã·ã§ã³ã¯è±èªã§ãããäžè²«ããã³ãã¥ãã±ãŒã·ã§ã³ãä¿èšŒããŸãã
- å¯èªæ§: çŸå°ã®ã¬ããŒãèŠä»¶ã«ãã£ãŠç°ãªãå¯èœæ§ã®ãããããŸããŸãªç»é¢ãµã€ãºãå°å·åœ¢åŒã§ãã©ã³ããèªã¿ãããããšã確èªããŠãã ããã
-
ååŸ©ãšæŽç·Ž:
å¯èŠåã¯ãã°ãã°å埩çãªããã»ã¹ã§ããåºæ¬çãªãããããäœæãããããã¬ãã¥ãŒãããã£ãŒãããã¯ïŒç¹ã«å€æ§ãªå©å®³é¢ä¿è ããã®ïŒãåŸãŠãMatplotlibã®åºç¯ãªã«ã¹ã¿ãã€ãºãªãã·ã§ã³ã䜿çšããŠãããæŽç·ŽããŸãã
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé ãšå€§èŠæš¡ããŒã¿ã»ãã
ã»ãšãã©ã®å žåçãªåæã¿ã¹ã¯ã§ã¯ãPandasãšMatplotlibã¯ããŸãæ©èœããŸããããããéåžžã«å€§èŠæš¡ãªããŒã¿ã»ããïŒæ°çŸäžãŸãã¯æ°ååã®ããŒã¿ãã€ã³ãïŒãæ±ãå Žåãããã©ãŒãã³ã¹ãåé¡ãšãªãå¯èœæ§ããããŸãã
- ã¬ã³ããªã³ã°æé: Matplotlibã¯ããã¹ãŠã®ããŒã«ãŒãç·åãæç»ããããšãããããå§åçãªæ°ã®ããŒã¿ãã€ã³ããæã€ããããã®ã¬ã³ããªã³ã°ãé ããªãããšããããŸãã
- ã¡ã¢ãªäœ¿çšé: 倧éã®DataFrameãæ ŒçŽããã³åŠçãããšãããªãã®ã¡ã¢ãªãæ¶è²»ããå¯èœæ§ããããŸãã
ãããã®èª²é¡ã«å¯ŸåŠããããã®ããã€ãã®æŠç¥ã以äžã«ç€ºããŸãã
- ãµã³ããªã³ã°: ãã¹ãŠã®ããŒã¿ãã€ã³ãããããããã代ããã«ã代衚çãªãµã³ãã«ãããããããããšãæ€èšããŠãã ãããããšãã°ã100幎åã®æ¥æ¬¡ããŒã¿ãããå Žåã鱿¬¡ãŸãã¯ææ¬¡å¹³åãããããããããšã§ããããããå§åããããšãªã广çã«åŸåãäŒããããšãã§ããŸãã
-
ããã³ã°/éèš: ååžã«ã¯ãé©åãªæ°ã®ãã³ãæã€ãã¹ãã°ã©ã ã䜿çšããŸããæ£åžå³ã«ã¯ãå¯åºŠã瀺ãããã«ãã€ã³ãã2次å
ã®å
è§åœ¢ãŸãã¯åè§åœ¢ã«ãã³åããããšãæ€èšããŠãã ãããPandasã®
groupby()ããã³éèšã¡ãœããã¯ããã®ååŠçã¹ãããã«æé©ã§ãã -
æç³»åã®ããŠã³ãµã³ããªã³ã°: æç³»åããŒã¿ã®å Žåãããããããåã«Pandasã®
.resample()ã¡ãœããã䜿çšããŠãããŒã¿ãããäœãé »åºŠïŒäŸïŒæ¥æ¬¡ãã鱿¬¡ãŸãã¯ææ¬¡ïŒã«ãªãµã³ããªã³ã°ããŸãã -
ãã¯ã¿ãŒã°ã©ãã£ãã¯ã¹ (SVG, PDF): PNGã¯Webã«é©ããŠããŸãããé«è§£å床ã®å°å·ç©ãã€ã³ã¿ã©ã¯ãã£ããªããã¥ã¡ã³ãã®å ŽåããããããSVGãŸãã¯PDFïŒ
plt.savefig('my_plot.svg')ïŒãšããŠä¿åãããšããã¯ã»ã«ã§ã¯ãªãæç»åœä»€ãæ ŒçŽãããããè€éãªããããã§ããå¹ççã«ãªãå ŽåããããŸãã - ããã°ããŒã¿å¯èŠåã®ããã®å°éã©ã€ãã©ãªã®æ€èš: æ¬åœã«å€§èŠæš¡ã§ã€ã³ã¿ã©ã¯ãã£ããªWebããŒã¹ã®å¯èŠåã«ã¯ãDatashaderïŒBokehãHoloViewsãšé£æºïŒãPlotlyãAltairãªã©ã®ãããã°ããŒã¿ãåãã«èšèšãããã©ã€ãã©ãªã®æ¹ãé©ããŠããå ŽåããããŸãããããã¯ãã°ãã°ãæ°çŸäžã®ãã€ã³ããåŠçããããã«GPUã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãäºåã¬ã³ããªã³ã°ã¿ã€ã«ãªã©ã®æè¡ãæ¡çšããŠããŸãããã ããã»ãšãã©ã®åæããã³ã¬ããŒãäœæã®ããŒãºã«ã¯ãPandas + Matplotlibã¯å ç¢ã§éåžžã«æèœãªçµã¿åããã§ããç¶ããŸãã
çµè«: ã°ããŒãã«ãªããŒã¿ãã©ãã£ãã匷åãã
ããŒã¿åŠçã®ããã®Pandasãšå¯èŠåã®ããã®Matplotlibã®çµ±åã¯ãããããåéãšå°åã®ããŒã¿ãããã§ãã·ã§ãã«ã«ãšã£ãŠã匷åã§æè»ãã€äžå¯æ¬ ãªããŒã«ããããæäŸããŸããPandasã®çµã¿èŸŒã¿ããããã®å©äŸ¿æ§ãããMatplotlibã®ãªããžã§ã¯ãæåAPIãæäŸãããã现ããªå¶åŸ¡ãŸã§ãçã®ããŒã¿ãé åçãªèŠèŠçç©èªã«å€ããããã«å¿ èŠãªãã®ããã¹ãŠæã£ãŠããŸãã
ãã®çžä¹å¹æãç¿åŸããããšã§ã次ã®ããšãå¯èœã«ãªããŸãã
- è€éãªããŒã¿ã»ãããè¿ éã«æ¢çŽ¢ããçè§£ããã
- é«åºŠã«ã«ã¹ã¿ãã€ãºããããåºçå質ã®å³ãäœæããã
- 倿§ãªã°ããŒãã«ã¹ããŒã¯ãã«ããŒã«æŽå¯ã广çã«äŒããã
- ç¹å®ã®å°åã®å¥œã¿ãã¬ããŒãåºæºã«åãããŠå¯èŠåã調æŽããã
广çãªããŒã¿å¯èŠåã¯ãåã«ãããããäœæããããšã ãã§ã¯ãããŸãããããã¯ãæç¢ºã§æ£ç¢ºãã€åœ±é¿åã®ããã¡ãã»ãŒãžãäŒããããšã§ããå¯èŠåã®å埩çãªæ§è³ªãåãå ¥ããMatplotlibã®èšå€§ãªã«ã¹ã¿ãã€ãºãªãã·ã§ã³ã詊è¡ããåžžã«èŽè¡ã®èŠç¹ãèæ ®ããŠãã ãããPandasãšMatplotlibãæŠåšã«ãããªãã¯ããŒã¿ã®äžçãããã²ãŒãããå°çäžã®ã©ãã§ãæç¢ºãã€èªä¿¡ãæã£ãŠãã®ç©èªãäŒããæºåãã§ããŠããŸãã
仿¥ããå®éšãå§ããããŒã¿ãå¯èŠåããæ°ããªã°ããŒãã«ãªæŽå¯ãè§£ãæŸã¡ãŸãããïŒ