PythonのPandasライブラリで学ぶデータ分析入門
このチュートリアルでは、Pythonのpandasライブラリを使用したデータ分析の基本を解説します。pandasは内部がC言語で実装されているため、処理速度が非常に速く、データ分析の分野で広く利用されている定番ライブラリです。
pandasには、主に2種類のデータ構造が用意されています。それがSeries(シリーズ)とDataFrame(データフレーム)です。それぞれ順番に見ていきましょう。
1. Seriesとは
Seriesは、カスタマイズ可能なインデックスと値を持つ1次元配列です。pandas.Series(data, index)クラスを使ってSeriesオブジェクトを作成できます。data引数には、整数・リスト・辞書などを渡すことが可能です。具体的な例を見てみましょう。
例:デフォルトインデックスでの作成
# pandasライブラリをインポート import pandas as pd # データ data = [1, 2, 3] # Seriesオブジェクトを作成 # インデックスを指定しない場合は自動的にデフォルトの連番が割り当てられる series = pd.Series(data) print(series)
出力結果
上記のプログラムを実行すると、次のような結果が得られます。
0 1 1 2 2 3 dtype: int64
では、独自のインデックスを指定するにはどうすればよいのでしょうか。次の例を見てください。
例:カスタムインデックスでの作成
# pandasライブラリをインポート import pandas as pd # データ data = [1, 2, 3] # インデックス index = ['a', 'b', 'c'] # Seriesオブジェクトを作成 series = pd.Series(data, index) print(series)
出力結果
上記のプログラムを実行すると、次のような結果が得られます。
a 1 b 2 c 3 dtype: int64
また、Seriesクラスに辞書型のデータを渡すと、キーがインデックスとして、値が実際のデータとして扱われます。以下の例で確認してみましょう。
例:辞書からSeriesを作成
# pandasライブラリをインポート
import pandas as pd
# データ(辞書)
data = {'a': 97, 'b': 98, 'c': 99}
# Seriesオブジェクトを作成
series = pd.Series(data)
print(series)出力結果
上記のプログラムを実行すると、次のような結果が得られます。
a 97 b 98 c 99 dtype: int64
Series内のデータには、インデックスを使ってアクセスできます。実際の例を見てみましょう。
例:インデックスによるデータへのアクセス
# pandasライブラリをインポート
import pandas as pd
# データ(辞書)
data = {'a': 97, 'b': 98, 'c': 99}
# Seriesオブジェクトを作成
series = pd.Series(data)
# インデックスを使ってSeriesからデータにアクセス
print(series['a'], series['b'], series['c'])出力結果
上記のコードを実行すると、次のような結果が得られます。
97 98 99
2. DataFrameとは
ここまでpandasのSeriesクラスの使い方を見てきました。続いて、DataFrameクラスの使い方を解説します。DataFrameは、行と列で構成される表形式のデータ構造を扱うためのクラスです。
DataFrameオブジェクトは、リスト・辞書・Seriesなど、さまざまなデータから作成できます。まずはリストを使ったDataFrameの作成方法を見てみましょう。
例:リストからDataFrameを作成
# pandasライブラリをインポート
import pandas as pd
# リスト
names = ['Tutorialspoint', 'Mohit', 'Sharma']
ages = [25, 32, 21]
# DataFrameを作成
data_frame = pd.DataFrame({'Name': names, 'Age': ages})
# DataFrameを出力
print(data_frame)出力結果
上記のプログラムを実行すると、次のような結果が得られます。
Name Age 0 Tutorialspoint 25 1 Mohit 32 2 Sharma 21
次に、Seriesを使ってDataFrameオブジェクトを作成する方法を見てみましょう。
例:SeriesからDataFrameを作成
# pandasライブラリをインポート
import pandas as pd
# Series
_1 = pd.Series([1, 2, 3])
_2 = pd.Series([1, 4, 9])
_3 = pd.Series([1, 8, 27])
# DataFrameを作成
data_frame = pd.DataFrame({'a': _1, 'b': _2, 'c': _3})
# DataFrameを出力
print(data_frame)出力結果
上記のコードを実行すると、次のような結果が得られます。
a b c 0 1 1 1 1 2 4 8 2 3 9 27
DataFrame内のデータには、列名を指定してアクセスすることができます。以下の例で確認しましょう。
例:列名によるデータへのアクセス
# pandasライブラリをインポート
import pandas as pd
# Series
_1 = pd.Series([1, 2, 3])
_2 = pd.Series([1, 4, 9])
_3 = pd.Series([1, 8, 27])
# DataFrameを作成
data_frame = pd.DataFrame({'a': _1, 'b': _2, 'c': _3})
# 列名'a'で列全体にアクセス
print(data_frame['a'])出力結果
上記のコードを実行すると、次のような結果が得られます。
0 1 1 2 2 3 Name: a, dtype: int64
まとめ
本チュートリアルでは、pandasの2大データ構造であるSeriesとDataFrameの基本的な使い方を学びました。Seriesは1次元データ、DataFrameは表形式の2次元データを扱うのに適しており、これらを組み合わせることで実践的なデータ分析が可能になります。まずは今回紹介したコードを実際に動かしながら、pandasの操作に慣れていくことをおすすめします。
-
Pythonのbase64モジュールを使ったデータエンコード・デコード入門
PythonにおけるBase64エンコーディングとはPython標準ライブラリのbase64モジュールは、バイナリデータをプレーンテキスト(ASCII)プロトコルで安全に送信できる形式へ変換するための機能を提供します。メール送信、URLへの埋め込み、HTTP POSTリクエストなど、テキストベースの通信経路でバイナリデータを扱いたい場面で活躍するモジュールです。このモジュールが実装しているのは、RFC 3548で定義されたBase16、Base32、Base64の各アルゴリズム、および事実上の標準となっているAscii85とBase85のエンコーディングです。RFC 3548準拠のエンコーディ
-
Pythonで学ぶ探索的データ分析(EDA)の基本と実践
データ分析において、探索的データ分析(Exploratory Data Analysis:EDA)は必ず最初に行うべきステップです。EDAを実施することで、以下のようなことが可能になります。データセットへの深い洞察を得るデータの背後にある構造を理解する重要なパラメータや、それらの間の関係性を抽出する前提となる仮説を検証するサンプルデータセットを使ったEDAの理解PythonでEDAを理解するために、サンプルデータはWebサイトから直接取得するか、ローカルディスクから読み込むことができます。ここでは、公開されているUCI Machine Learning Repositoryから「赤ワインの品質