Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説
Pythonによるデータ分析と可視化の概要
Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。
pandasのインストール方法
pandasをインストールするには、ターミナルで以下のコマンドを実行してください。
pip install pandas
Anaconda環境をお使いの場合は、次のコマンドでもインストール可能です。
conda install pandas
pandasのDataFrame(データフレーム)とは
DataFrameは、pandasでデータを扱う際の最も重要なデータ構造です。行と列からなる表形式でデータを管理でき、Excelのワークシートのように直感的に操作できるのが特徴です。
コード例
import numpy as np import pandas as pd from numpy.random import randn np.random.seed(50) df = pd.DataFrame(randn(6,4), ['a','b','c','d','e','f'], ['w','x','y','z']) df
出力結果
| w | x | y | z | |
|---|---|---|---|---|
| a | -1.560352 | -0.030978 | -0.620928 | -1.464580 |
| b | 1.411946 | -0.476732 | -0.780469 | 1.070268 |
| c | -1.282293 | -1.327479 | 0.126338 | 0.862194 |
| d | 0.696737 | -0.334565 | -0.997526 | 1.598908 |
| e | 3.314075 | 0.987770 | 0.123866 | 0.742785 |
| f | -0.393956 | 0.148116 | -0.412234 | -0.160715 |
pandasにおける欠損値(Missing Data)の処理
現実のデータセットには、欠損値(NaN)が含まれていることが少なくありません。pandasでは、欠損値を検出・削除・補完するための便利なメソッドが多数提供されています。
import numpy as np
import pandas as pd
d = {'A': [1,2,np.nan], 'B': [9, np.nan, np.nan], 'C': [1,4,9]}
df = pd.DataFrame(d)
df
出力結果
| A | B | C | |
|---|---|---|---|
| 0 | 1.0 | 9.0 | 1 |
| 1 | 2.0 | NaN | 4 |
| 2 | NaN | NaN | 9 |
上記のデータには3つの欠損値(NaN)が含まれています。ここから、代表的な処理方法を順番に見ていきましょう。
1. dropna():NaNを含む行を削除する
df.dropna()
NaNが1つでも含まれる行はすべて削除され、すべての値が揃っている0行目のみが残ります。
2. dropna(axis=1):NaNを含む列を削除する
df.dropna(axis = 1)
axis=1を指定すると列方向に対して削除が行われます。NaNを含むA列とB列が削除され、C列のみが残ります。
3. dropna(thresh=2):しきい値を指定して削除する
df.dropna(thresh = 2)
thresh=2を指定すると、「非NaN値が2つ以上含まれる行」のみが保持されます。この例では0行目と1行目が残ります。
4. fillna():欠損値を平均値で補完する
df.fillna(value = df.mean())
各列の平均値でNaNを埋めることもできます。A列の平均は1.5、B列の平均は9.0なので、それぞれのNaNがその値で置き換えられます。
CSVファイルからのデータ読み込み
pandasでは、ローカルマシンに保存されたCSVファイルや、Web上に公開されているファイルを簡単に読み込むことができます。
# pandasライブラリのインポート
import pandas as pd
# CSVファイルを読み込み、DataFrame変数に代入
df = pd.read_csv("SYB61_T03_Population Growth Rates in Urban areas and Capital cities.csv", encoding="ISO-8859-1")
# 先頭5行を表示
df.head()
出力結果

DataFrameやCSVファイルの行数・列数を確認するには、shape属性を使用します。
# 行数と列数をカウント df.shape
出力結果
(4166, 9)
DataFrameの統計処理
pandasには、DataFrameに対してさまざまな統計処理を行うための機能が用意されています。
# NaN値を除外した要約統計量を計算 df.describe()
出力結果

# 数値データの順位(ランク)を計算 df.rank()
出力結果

.....
.....

matplotlibによるグラフ描画
データ分析の結果を視覚的に把握するには、matplotlibを使ったグラフ描画が非常に有効です。ここでは、インドの国勢調査(標本登録システム)に基づく人口データを例に、代表的なグラフを描いてみましょう。
折れ線グラフ
import matplotlib.pyplot as plt
years = [1981, 1991, 2001, 2011, 2016]
Average_populations = [716493000, 891910000, 1071374000, 1197658000, 1273986000]
plt.plot(years, Average_populations)
plt.title("Census of India: sample registration system")
plt.xlabel("Year")
plt.ylabel("Average_populations")
plt.show()
出力結果

散布図
同じデータを散布図で表現すると、以下のようになります。
plt.scatter(years, Average_populations)

ヒストグラム
import matplotlib.pyplot as plt
Average_populations = [716493000, 891910000, 1071374000, 1197658000, 1273986000]
plt.hist(Average_populations, bins = 10)
plt.xlabel("Average_populations")
plt.ylabel("Frequency")
plt.show()
出力結果

まとめ
本記事では、Pythonのpandasライブラリを使ったデータ分析の基本を学びました。DataFrameの作成、欠損値の処理(dropna・fillna)、CSVファイルの読み込み、describeやrankによる統計処理、そしてmatplotlibによる折れ線グラフ・散布図・ヒストグラムの描画まで、一連の流れを紹介しました。これらのスキルは実務のデータ分析で頻繁に活躍するものばかりです。ぜひご自身のデータでも試してみてください。
-
Pandasで学ぶPythonデータ分析と可視化の基本
Pandas(パンダス)は、データサイエンスやデータ分析の分野で最も人気のあるPythonライブラリの一つです。データの操作・分析・クレンジング(前処理)を得意としており、C言語で実装された低レベルライブラリ「NumPy」の上位に位置する高レベルな抽象化として機能します。本記事では、アナリストやデータサイエンティストとして必ず押さえておきたい重要ポイントを順を追って解説します。ライブラリのインストール必要なライブラリはpipコマンドで簡単にインストールできます。ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。pip install pandasDataFrame と Ser
-
Pythonで学ぶ探索的データ分析(EDA)の基本と実践
データ分析において、探索的データ分析(Exploratory Data Analysis:EDA)は必ず最初に行うべきステップです。EDAを実施することで、以下のようなことが可能になります。データセットへの深い洞察を得るデータの背後にある構造を理解する重要なパラメータや、それらの間の関係性を抽出する前提となる仮説を検証するサンプルデータセットを使ったEDAの理解PythonでEDAを理解するために、サンプルデータはWebサイトから直接取得するか、ローカルディスクから読み込むことができます。ここでは、公開されているUCI Machine Learning Repositoryから「赤ワインの品質