【Pythonデータ分析入門】Pandasで表データ操作自由自在!CSV読込から簡単集計まで
【Pythonデータ分析入門】Pandasで表データ操作自由自在!CSV読込から簡単集計まで
「PythonでCSVファイルやExcelのデータを扱いたいけど、どうすればいいの?」
「データ分析って聞くけど、何から始めたらいいか分からない…」
こんにちは! Pythonを使ってデータと向き合いたいと考えているあなたへ。今回は、データ分析の世界で必須とも言える超強力ライブラリ、Pandas(パンダス)の基本的な使い方をご紹介します。Pandasを使えば、Excelの表計算のように、いえ、それ以上に柔軟かつ効率的にデータを扱うことができるようになります。
この記事では、Pandasのインストールから、CSVファイルの読み込み、データの表示、そして簡単なデータ操作や集計まで、サンプルコードを動かしながら丁寧に解説していきます。Pandasを使いこなして、データ分析の第一歩を踏み出しましょう!
1. Pandasとは? なぜデータ分析に必要なの?
Pandasは、Pythonプログラミング言語で使用できる、高速で強力、かつ柔軟で使いやすいデータ分析および操作ツールです。特に、表形式のデータや時系列データを扱うのに優れています。
Pandasの中心的なデータ構造は以下の2つです。
Series
(シリーズ): 1次元のラベル付き配列です。Excelの1列のようなイメージです。DataFrame
(データフレーム): 2次元のラベル付きデータ構造で、異なる型の列を持つことができます。まさにExcelのシートのようなものです。これがPandas操作の主役となります。
Pandasを使うことで、以下のような作業が簡単に行えるようになります。
- CSV、Excel、データベースなど、さまざまな形式のデータの読み込み・書き出し
- データのクリーニング(欠損値の処理、重複の削除など)
- データの選択、フィルタリング、並び替え
- データの集計、統計量の計算
- データの結合や変形
2. Pandasのインストール
まずはPandasをインストールしましょう。ターミナル(コマンドプロンプトやPowerShell、ターミナル.appなど)を開いて、以下のコマンドを実行してください。
pip install pandas
これで基本的なインストールは完了です。
(オプション)Excelファイルを扱いたい場合:
Excelファイル (.xlsx
) を読み書きするには、追加でopenpyxl
というライブラリが必要になることがあります。必要に応じてインストールしてください。
pip install openpyxl
💡仮想環境のすすめ:
他のライブラリと同様に、Pandasもプロジェクトごとの仮想環境(venv
など)にインストールすることを推奨します。venv仮想環境の構築はこちらで紹介しています。
3. Pandasを使ってみよう!基本操作
それでは、実際にPandasを使ってみましょう。まず、Pandasをインポートするのがお決まりです。
import pandas as pd
pd
という別名でインポートするのが慣習となっています。
3.1. サンプルデータの準備 (CSVファイル)
venv仮想環境の構築はこちらで紹介しています。練習用に、以下のような内容のCSVファイルを作成し、sample_data.csv
という名前でPythonスクリプトと同じディレクトリに保存してください。
name,age,city,score
Alice,25,New York,85
Bob,30,London,90
Charlie,22,Paris,78
David,35,Tokyo,92
Eve,28,New York,88
1行目がヘッダー(列名)で、2行目以降がデータです。
3.2. CSVファイルの読み込み
作成したCSVファイルをPandasのDataFrameとして読み込みます。
import pandas as pd
# CSVファイルを読み込んでDataFrameを作成
df = pd.read_csv('sample_data.csv')
# DataFrameを表示
print(df)
実行結果 (例):
name age city score
0 Alice 25 New York 85
1 Bob 30 London 90
2 Charlie 22 Paris 78
3 David 35 Tokyo 92
4 Eve 28 New York 88
このように、CSVファイルの内容が綺麗に表形式で表示されました。左端の0から始まる数字は「インデックス」と呼ばれる行のラベルです。
3.3. DataFrameの情報を確認する
読み込んだデータがどのようなものか、概要を把握するための便利なメソッドがいくつかあります。
import pandas as pd
df = pd.read_csv('sample_data.csv')
# 最初の5行を表示 (デフォルトは5行)
print("--- 最初の3行 ---")
print(df.head(3))
# 最後の5行を表示
print("\n--- 最後の2行 ---")
print(df.tail(2))
# DataFrameの行数と列数 (形状)
print("\n--- DataFrameの形状 (行数, 列数) ---")
print(df.shape)
# 各列のデータ型や欠損値の情報を表示
print("\n--- DataFrameの情報 ---")
df.info()
# 数値データの基本的な統計量を表示
print("\n--- 基本的な統計量 ---")
print(df.describe())
実行結果 (info()とdescribe()部分の例):
--- DataFrameの情報 ---
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 5 non-null object
1 age 5 non-null int64
2 city 5 non-null object
3 score 5 non-null int64
dtypes: int64(2), object(2)
memory usage: 288.0+ bytes
--- 基本的な統計量 ---
age score
count 5.000000 5.000000
mean 28.000000 86.600000
std 5.147815 5.319774
min 22.000000 78.000000
25% 25.000000 85.000000
50% 28.000000 88.000000
75% 30.000000 90.000000
max 35.000000 92.000000
info()
を見ると、各列のデータ型(objectは文字列、int64は整数)や、欠損値がないこと(Non-Null Countが全行数と同じ)などが分かります。
3.4. 列の選択
特定の列のデータだけを取り出す方法です。
import pandas as pd
df = pd.read_csv('sample_data.csv')
# 'name'列だけを選択 (結果はSeries)
names = df['name']
print("--- 名前 (Series) ---")
print(names)
# 'name'列と'score'列を選択 (結果はDataFrame)
name_and_score = df[['name', 'score']]
print("\n--- 名前とスコア (DataFrame) ---")
print(name_and_score)
実行結果 (例):
--- 名前 (Series) ---
0 Alice
1 Bob
2 Charlie
3 David
4 Eve
Name: name, dtype: object
--- 名前とスコア (DataFrame) ---
name score
0 Alice 85
1 Bob 90
2 Charlie 78
3 David 92
4 Eve 88
1列だけ選択するとSeries
、複数列を選択するとDataFrame
としてデータが返ってきます。
3.5. 行の選択 (フィルタリング)
特定の条件に合う行だけを抽出します。
import pandas as pd
df = pd.read_csv('sample_data.csv')
# 'age'が30歳以上の人だけを抽出
older_people = df[df['age'] >= 30]
print("--- 30歳以上の人 ---")
print(older_people)
# 'city'が'New York'で、かつ'score'が85以上の人
newyork_high_scorers = df[(df['city'] == 'New York') & (df['score'] >= 85)]
print("\n--- New York在住でスコア85以上の人 ---")
print(newyork_high_scorers)
実行結果 (例):
--- 30歳以上の人 ---
name age city score
1 Bob 30 London 90
3 David 35 Tokyo 92
--- New York在住でスコア85以上の人 ---
name age city score
0 Alice 25 New York 85
4 Eve 28 New York 88
複数の条件を指定する場合は、各条件を()
で囲み、論理積(AND)は&
、論理和(OR)は|
を使います。
3.6. 簡単なデータ操作と集計
import pandas as pd
df = pd.read_csv('sample_data.csv')
# 新しい列 'age_in_5_years' を追加
df['age_in_5_years'] = df['age'] + 5
print("--- 5年後の年齢を追加 ---")
print(df.head())
# 'score'で降順に並び替え
df_sorted = df.sort_values(by='score', ascending=False)
print("\n--- スコアで降順ソート ---")
print(df_sorted.head())
# 'score'の平均値
average_score = df['score'].mean()
print(f"\n平均スコア: {average_score}")
# 'city'ごとの平均スコア (少し高度なgroupby)
city_avg_score = df.groupby('city')['score'].mean()
print("\n--- 都市ごとの平均スコア ---")
print(city_avg_score)
実行結果 (一部抜粋例):
--- 5年後の年齢を追加 ---
name age city score age_in_5_years
0 Alice 25 New York 85 30
1 Bob 30 London 90 35
2 Charlie 22 Paris 78 27
3 David 35 Tokyo 92 40
4 Eve 28 New York 88 33
平均スコア: 86.6
--- 都市ごとの平均スコア ---
city
London 90.0
New York 86.5
Paris 78.0
Tokyo 92.0
Name: score, dtype: float64
3.7. CSVファイルへの書き出し
処理したDataFrameを新しいCSVファイルとして保存できます。
import pandas as pd
df = pd.read_csv('sample_data.csv')
# 'score'が85以上のデータだけを抽出
high_scorers = df[df['score'] >= 85]
# 新しいCSVファイルとして書き出し
# index=False を指定すると、DataFrameのインデックス(0,1,2...)がファイルに書き出されません
high_scorers.to_csv('high_scorers_data.csv', index=False)
print("high_scorers_data.csv に書き出しました。")
このコードを実行すると、high_scorers_data.csv
というファイルが作成されます。
まとめ:Pandasでデータと仲良くなろう!
今回は、PythonのPandasライブラリの本当に基本的な部分をご紹介しました。
- CSVファイルの読み込み (
pd.read_csv()
) - DataFrameの基本的な情報の確認 (
head()
,shape
,info()
,describe()
) - 列の選択
- 行のフィルタリング(条件指定)
- 簡単なデータ操作(新しい列の追加、ソート、集計)
- CSVファイルへの書き出し (
df.to_csv()
)
Pandasは非常に奥が深く、ここで紹介した機能はほんの入り口に過ぎません。しかし、これらの基本操作をマスターするだけでも、多くのデータ処理作業が格段に楽になるはずです。
ぜひ、お手持ちのデータや公開されているサンプルデータなどで、Pandasを実際に動かしてみてください。データを自在に操る楽しさを感じられることでしょう!
次回(中級編)は、もう少し進んだデータ操作や、複数のDataFrameを結合する方法などについて解説できればと思います。お楽しみに!
コメント
コメントを投稿