Python入門:データ分析のためのPandasとNumPy基礎
データ分析をこれから本格的に学びたいと考えている方にとって、どのツールや言語から始めれば良いか迷うことがあるかもしれません。多くの選択肢がある中で、データ分析の世界で広く利用されているプログラミング言語の一つにPythonがあります。Pythonは文法がシンプルで学習しやすく、データ分析に特化した強力なライブラリが豊富に提供されているため、初心者からプロフェッショナルまで幅広く活用されています。
この記事では、Pythonを使ったデータ分析の基礎として、特によく使われるライブラリであるPandasとNumPyに焦点を当て、その基本的な概念と使い方をご紹介します。Pythonやプログラミングの経験がほとんどない方でも理解できるよう、平易な言葉で解説を進めます。
Pythonとデータ分析
なぜデータ分析にPythonがよく使われるのでしょうか。主な理由として、以下の点が挙げられます。
- 汎用性の高さ: Pythonはデータ分析だけでなく、Web開発、機械学習、自動化など、様々な分野で利用できます。
- 豊富なライブラリ: データ操作、統計分析、可視化、機械学習など、データ分析のあらゆる工程をサポートするライブラリが充実しています。
- 活発なコミュニティ: 利用者が多いため、困ったときに情報を得やすく、学習リソースも豊富です。
これらの理由から、Pythonはデータ分析を学ぶ上で非常に有用な言語と言えます。
PandasとNumPyとは
データ分析において、Pythonとセットで語られることが多いのがPandasとNumPyというライブラリです。
- NumPy (Numerical Python): 数値計算を効率的に行うためのライブラリです。特に、多次元配列(行列のようなもの)を高速に処理することに優れています。統計計算や線形代数などの基盤となります。
- Pandas: NumPyを基盤として構築されたライブラリで、データの読み込み、整形、集計、加工など、データ分析の準備段階で頻繁に行われる作業を簡単に行うことができます。表形式のデータを扱うための
DataFrame
という非常に便利なデータ構造を提供しています。
データ分析の多くのケースでは、まずPandasでデータを読み込み、整形し、その過程でNumPyの機能も活用するという流れになります。
NumPyの基礎:配列を理解する
NumPyの最も基本的な要素は「ndarray(n-dimensional array)」と呼ばれる多次元配列です。Pythonのリストに似ていますが、数値計算に特化しており、非常に高速に処理できます。
簡単な例を見てみましょう。
import numpy as np # numpyをnpという名前でインポート
# 1次元配列を作成
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
print(arr1.shape) # 配列の形状を表示
# 2次元配列を作成
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
print(arr2.shape) # 配列の形状を表示
このコードでは、np.array()
関数を使って1次元と2次元の配列を作成し、その内容と形状(shape)を表示しています。形状は、配列が持つ次元ごとの要素数を示します。
NumPy配列は、要素ごとの計算を簡単に行える点が特徴です。
# 配列の要素全てに2を掛ける
print(arr1 * 2)
# 配列同士の足し算(要素ごとに行われる)
arr3 = np.array([10, 20, 30, 40, 50])
print(arr1 + arr3)
このように、NumPyを使うと配列全体や配列同士の計算を簡潔に記述できます。
Pandasの基礎:DataFrameを使う
Pandasの核となるデータ構造はDataFrame
です。これは、Excelのシートやリレーショナルデータベースのテーブルのような、行と列を持つ表形式のデータを表現します。各列には名前(カラム名)が付いています。
まず、簡単なDataFrameを作成してみましょう。
import pandas as pd # pandasをpdという名前でインポート
# 辞書を使ってDataFrameを作成
data = {
'名前': ['山田', '田中', '佐藤', '鈴木'],
'年齢': [25, 30, 22, 28],
'性別': ['男性', '女性', '男性', '女性']
}
df = pd.DataFrame(data)
print(df)
出力は以下のようになります。
名前 年齢 性別
0 山田 25 男性
1 田中 30 女性
2 佐藤 22 男性
3 鈴木 28 女性
左端の0, 1, 2, 3は「インデックス」と呼ばれ、各行を一意に識別するためのものです。名前
、年齢
、性別
はカラム名です。
データの読み込みと表示
実際のデータ分析では、CSVファイルやExcelファイルなどの外部データを読み込むことが一般的です。Pandasはこれらのファイルの読み込み機能を提供しています。
例えば、sample.csv
というCSVファイルがあるとします。
名前,年齢,性別,都道府県
山田,25,男性,東京都
田中,30,女性,大阪府
佐藤,22,男性,愛知県
鈴木,28,女性,福岡県
高橋,35,男性,東京都
このファイルを読み込むには、pd.read_csv()
関数を使います。
# CSVファイルを読み込む
df_csv = pd.read_csv('sample.csv')
print(df_csv)
読み込んだデータの最初の数行や、各列のデータ型などを確認することは、データ分析の最初のステップとして非常に重要です。
# データの最初の5行を表示
print(df_csv.head())
# データの最後の5行を表示
print(df_csv.tail())
# 各列のデータ型や欠損値の情報を表示
print(df_csv.info())
# 基本的な統計情報を表示(数値データのある列のみ)
print(df_csv.describe())
info()
を使うと、例えば「年齢」列が数値として認識されているか、データが全て揃っているか(欠損値がないか)などを把握できます。describe()
は、平均値、中央値、最大値、最小値といった要約統計量を提供し、データの分布を掴むのに役立ちます。
データの選択とフィルタリング
DataFrameから特定の列を選んだり、特定の条件を満たす行だけを取り出したりする操作は頻繁に行われます。
列の選択:
特定の列を選択するには、カラム名を指定します。
# '名前'列だけを選択
print(df_csv['名前'])
# 複数の列を選択(リストで指定)
print(df_csv[['名前', '年齢']])
単一の列を選択するとSeries
というPandasの別のデータ構造になります。複数の列を選択するとDataFrame
になります。
行のフィルタリング:
特定の条件を満たす行だけを抽出するには、条件式を使います。
# 年齢が30歳以上の行だけを選択
df_filtered = df_csv[df_csv['年齢'] >= 30]
print(df_filtered)
# 性別が女性の行だけを選択
df_female = df_csv[df_csv['性別'] == '女性']
print(df_female)
# 複数の条件を組み合わせる(例:東京都に住む男性)
# 条件式はカッコで囲み、論理演算子(&:AND, |:OR, ~:NOT)を使用
df_tokyo_male = df_csv[(df_csv['都道府県'] == '東京都') & (df_csv['性別'] == '男性')]
print(df_tokyo_male)
これらの基本的な操作を組み合わせることで、データの必要な部分だけを取り出して分析の対象とすることができます。
まとめと次のステップ
この記事では、データ分析でよく使われるPythonライブラリ、PandasとNumPyの基本的な概念と操作をご紹介しました。NumPyの配列とPandasのDataFrameというデータ構造を理解し、データの読み込み、表示、基本的な選択・フィルタリングができるようになると、データ分析のスタートラインに立つことができます。
もちろん、PandasやNumPyにはここで紹介した以外にも多くの強力な機能があります。例えば、データの並べ替え、欠損値の処理、データの結合、集計、グループ化などです。
次に学ぶべきこととしては、以下のステップが考えられます。
- Pandasのより進んだデータ操作: 欠損値の扱い、データの集計(groupby)、データの結合(merge, join)、列の追加・削除など。
- データの可視化: MatplotlibやSeabornといったライブラリを使って、グラフを作成しデータを視覚的に理解する方法。
- 統計分析: SciPyやStatsmodelsといったライブラリを使った基本的な統計手法の実装。
- 実践的なデータセットでの演習: Kaggleなどのプラットフォームで公開されているデータセットを使って、一連の分析プロセスを自分で実行してみる。
焦らず、一つずつ確実にスキルを身につけていくことが大切です。この記事が、Pythonを使ったデータ分析学習の最初のステップとして役立てば幸いです。