0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🐼【初心者向け】これだけでOK!Python×PandasでCSVを読み込んでデータ分析&可視化してみた

Posted at

はじめに

Pythonでデータ分析を始めたいけど、「難しそう」「何から始めればいいかわからない」という人に朗報です!

この記事では、CSVファイルの読み込みからデータの集計、グラフの可視化までを、人気ライブラリ「pandas(パンダス)」を使ってサクッと体験してみましょう🐼

一番下にプログラムおいてありますのでその説明となります。

📦 使うライブラリ

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
  • pandas: データ分析の定番ライブラリ
  • matplotlib: グラフ描画用
  • japanize_matplotlib: matplotlibを日本語対応にする神ライブラリ

📂 CSVファイルの読み込み

df = pd.read_csv('pandas_test/sample.csv', encoding='utf-8')

CSVファイルを読み込んで、dfという名前のデータフレームとして扱います。

print(df.head())

最初の5行を表示するとこんな感じ👇

   名前  年齢 都道府県 血液型
0  田中   28   東京    A
1  佐藤   34   大阪    B
...

📏 データのサイズを確認!

print(f"行数: {len(df)}, 列数: {len(df.columns)}")

➡️ データの「行数」と「列数」がわかります。大量データでもビビらず安心!


📊 基本統計:年齢の平均・最大・最小・合計

print(df['年齢'].mean())  # 平均
print(df['年齢'].max())   # 最大
print(df['年齢'].min())   # 最小
print(df['年齢'].sum())   # 合計

👉 年齢列のデータを一発で分析!初心者でも使いやすい構文です。


🗾 都道府県ごとの人数を集計してみる

print(df['都道府県'].value_counts())

このコードで、どの都道府県に何人いるかが一目瞭然!


🔍 groupbyで都道府県ごとの平均年齢を出す

print(df.groupby('都道府県')['年齢'].mean())

都道府県単位での分析が可能に。これだけで中級者感出せます!


🎯 locで条件に合うデータを抽出

df.loc[(df['都道府県'] == '大阪') & (df['年齢'] >= 30)]

「大阪」かつ「30歳以上」の人だけをピックアップできます!
SQL感覚で書けて超便利。


➕ データフレームを結合する【concat】

df_concat = pd.concat([df, df_extra], ignore_index=True)

別のデータフレーム(df_extra)をくっつけることも可能!


🔗 データをキーで結合する【merge】

df_merged = pd.merge(df, extra_info, on='名前', how='left')

「名前」で2つのデータを結合(=JOIN)。SQLを知ってる人にはおなじみの操作です。


🧠 lambda × mapで新しい列を追加!

df['年齢区分'] = list(map(lambda x: '大人' if x >= 30 else '若者', df['年齢']))

年齢が30歳以上かどうかで「年齢区分」を追加します。

名前 | 年齢 | 年齢区分
田中 | 28  | 若者
佐藤 | 34  | 大人

➡️ 「新しい指標を作る」って、分析感あってワクワクしません?


📈 折れ線グラフで年齢を可視化!

plt.plot(df['名前'], df['年齢'], marker='o')
plt.title('名前ごとの年齢(折れ線グラフ)')
plt.show()

見た目にもわかりやすいグラフで、年齢の違いが一目でわかる!
表示結果はこんな感じ。思ったよりきれいにグラフを作れる!📈

スクリーンショット 2025-08-14 1.20.15.png


📊 棒グラフで都道府県ごとの人数を可視化!

df['都道府県'].value_counts().plot(kind='bar')
plt.title('都道府県ごとの人数(棒グラフ)')
plt.show()

**人数の多い都道府県はどこか?**を直感的に把握できます!
表示結果はこんな感じ。思ったよりきれいにグラフを作れる!📊

スクリーンショット 2025-08-14 1.20.24.png


🎉 おわりに:Pandasって実はカンタン!

ここまでできたら、もうあなたは立派なデータ分析ビギナーです!

やったことをまとめると:

  • CSVファイルの読み込み
  • データの基本統計
  • 条件による抽出
  • データフレームの結合
  • グラフでの可視化

💡 次にチャレンジしたいこと

  • Seabornでさらにオシャレなグラフに挑戦
  • Jupyter Notebookでインタラクティブに操作
  • Excelとの連携

🙌 この記事が役に立ったら...
いいね❤️・ストック⭐・フォロー👤よろしくお願いします!


📁 サンプルCSVの例(参考)

以下のようなCSVを使うとスムーズに再現できます!

名前,年齢,都道府県,血液型
田中,23,東京,A
佐藤,31,大阪,O
鈴木,29,愛知,B
高橋,25,福岡,AB
山本,28,北海道,A
小林,34,東京,O
加藤,22,大阪,B
斎藤,27,愛知,A

サンプルプログラム全体(参考)

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib

# CSVファイル読み込み(例: sample.csv)
df = pd.read_csv('pandas_test/sample.csv', encoding='utf-8')

# データ表示
print('--- CSVデータ ---')
print(df.head())

# 行数・列数
print('\n--- 行数・列数 ---')
print(f"行数: {len(df)}, 列数: {len(df.columns)}")

# 例: 年齢カラムがあれば平均を計算
if '年齢' in df.columns:
    print('\n--- 年齢の平均 ---')
    print(df['年齢'].mean())

# 年齢の最大・最小・合計
if '年齢' in df.columns:
    print('\n--- 年齢の最大 ---')
    print(df['年齢'].max())
    print('\n--- 年齢の最小 ---')
    print(df['年齢'].min())
    print('\n--- 年齢の合計 ---')
    print(df['年齢'].sum())

# 例: 都道府県ごとの人数集計
if '都道府県' in df.columns:
    print('\n--- 都道府県ごとの人数 ---')
    print(df['都道府県'].value_counts())

# groupbyによる都道府県ごとの平均年齢
if '都道府県' in df.columns and '年齢' in df.columns:
    print('\n--- 都道府県ごとの平均年齢 ---')
    print(df.groupby('都道府県')['年齢'].mean())

# locを使ったサンプル(大阪在住かつ年齢30以上の人を抽出)
osaka_30_df = df.loc[(df['都道府県'] == '大阪') & (df['年齢'] >= 30)]
print('\n--- 大阪在住かつ年齢30以上 ---')
print(osaka_30_df)

# concatでデータフレームを結合するサンプル
extra_data = {
    '名前': ['松本', '石田'],
    '年齢': [26, 32],
    '都道府県': ['京都', '東京'],
    '血液型': ['B', 'A']
}
df_extra = pd.DataFrame(extra_data)
df_concat = pd.concat([df, df_extra], ignore_index=True)
print('\n--- concatで結合したデータフレーム ---')
print(df_concat)

# mergeでデータフレームを結合するサンプル
# 例: extra_info(名前と趣味)をdfと名前で結合
extra_info = pd.DataFrame({
    '名前': ['田中', '佐藤', '鈴木', '高橋', '山本'],
    '趣味': ['読書', 'サッカー', '料理', '映画', '旅行']
})
df_merged = pd.merge(df, extra_info, on='名前', how='left')
print('\n--- mergeで結合したデータフレーム ---')
print(df_merged)

# map + lambda式で「年齢区分」列を追加
# 30歳以上→'大人'、それ以外→'若者'
df['年齢区分'] = list(map(lambda x: '大人' if x >= 30 else '若者', df['年齢']))
print('\n--- 年齢区分を追加したデータフレーム ---')
print(df[['名前', '年齢', '年齢区分']])

# 年齢の折れ線グラフ
plt.figure(figsize=(8,4))
plt.plot(df['名前'], df['年齢'], marker='o')
plt.title('名前ごとの年齢(折れ線グラフ)')
plt.xlabel('名前')
plt.ylabel('年齢')
plt.grid(True)
plt.tight_layout()
plt.show()

# 都道府県ごとの人数の棒グラフ
plt.figure(figsize=(8,4))
df['都道府県'].value_counts().plot(kind='bar')
plt.title('都道府県ごとの人数(棒グラフ)')
plt.xlabel('都道府県')
plt.ylabel('人数')
plt.tight_layout()
plt.show()

実行結果(参考)

--- CSVデータ ---
   名前  年齢 都道府県 血液型
0  田中  23   東京   A
1  佐藤  31   大阪   O
2  鈴木  29   愛知   B
3  高橋  25   福岡  AB
4  山本  28  北海道   A

--- 行数・列数 ---
行数: 8, 列数: 4

--- 年齢の平均 ---
27.375

--- 年齢の最大 ---
34

--- 年齢の最小 ---
22

--- 年齢の合計 ---
219

--- 都道府県ごとの人数 ---
都道府県
東京     2
大阪     2
愛知     2
福岡     1
北海道    1
Name: count, dtype: int64

--- 都道府県ごとの平均年齢 ---
都道府県
北海道    28.0
大阪     26.5
愛知     28.0
東京     28.5
福岡     25.0
Name: 年齢, dtype: float64

--- 大阪在住かつ年齢30以上 ---
   名前  年齢 都道府県 血液型
1  佐藤  31   大阪   O

--- concatで結合したデータフレーム ---
   名前  年齢 都道府県 血液型
0  田中  23   東京   A
1  佐藤  31   大阪   O
2  鈴木  29   愛知   B
3  高橋  25   福岡  AB
4  山本  28  北海道   A
5  小林  34   東京   O
6  加藤  22   大阪   B
7  斎藤  27   愛知   A
8  松本  26   京都   B
9  石田  32   東京   A

--- mergeで結合したデータフレーム ---
   名前  年齢 都道府県 血液型    趣味
0  田中  23   東京   A    読書
1  佐藤  31   大阪   O  サッカー
2  鈴木  29   愛知   B    料理
3  高橋  25   福岡  AB    映画
4  山本  28  北海道   A    旅行
5  小林  34   東京   O   NaN
6  加藤  22   大阪   B   NaN
7  斎藤  27   愛知   A   NaN

--- 年齢区分を追加したデータフレーム ---
   名前  年齢 年齢区分
0  田中  23   若者
1  佐藤  31   大人
2  鈴木  29   若者
3  高橋  25   若者
4  山本  28   若者
5  小林  34   大人
6  加藤  22   若者
7  斎藤  27   若者
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?