pandasとは
pandasは、Pythonプログラミング言語用のオープンソースのデータ分析ライブラリです。pandasは、データ操作と分析に特化した強力なツールを提供します。特に、数値表と時間系列データを操作するためのデータ構造と操作を提供します。
pandasの主な特徴は以下の通りです:
- データフレームという強力なデータ構造
- データの読み込みと書き出し(CSV、Excel、SQLデータベース、HDF5など)
- データクリーニングと前処理(欠損データの処理、データの変換、データのマージや結合など)
- データの探索と分析(統計やグラフ作成)
- 時系列データの操作
これらの機能により、pandasはPythonでデータ分析を行う際の重要なツールとなっています。データサイエンス、機械学習、統計分析など、さまざまな分野で活用されています。また、pandasはNumPyとMatplotlibと連携して使うことが多く、これらのライブラリと合わせてPythonのデータ分析の基盤を形成しています。
pandasのインストール方法
pandasはPythonのパッケージ管理システムであるpipを使用して簡単にインストールすることができます。以下のコマンドをターミナルに入力して実行します。
pip install pandas
また、AnacondaというPythonのディストリビューションを使用している場合は、以下のコマンドでpandasをインストールすることができます。
conda install pandas
これらのコマンドは、Pythonと対応するパッケージ管理システムが既にインストールされていることを前提としています。それぞれのコマンドは、pandasだけでなく、pandasが依存するライブラリ(NumPyなど)も一緒にインストールします。
以上の手順でpandasをインストールした後、Pythonのスクリプトやインタラクティブシェルから以下のようにしてpandasをインポートし、使用することができます。
import pandas as pd
これで、pandasの強力なデータ分析機能をPythonで利用する準備が整いました。次に、pandasの基本的なデータ型や操作方法について学んでいきましょう。
基本的なデータ型: SeriesとDataFrame
pandasでは、データを扱うための2つの主要なデータ型が提供されています:SeriesとDataFrameです。
Series
Seriesは、1次元のラベル付き配列で、任意のデータ型(整数、文字列、浮動小数点数、Pythonオブジェクトなど)を格納できます。ラベルは一般的にはインデックスと呼ばれます。
例えば、以下のようにしてSeriesを作成することができます:
import pandas as pd
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
このコードは、数値のリストをSeriesに変換し、それを表示します。出力は、各データポイントのインデックスと値を示します。
DataFrame
DataFrameは、2次元のラベル付きデータ構造で、異なる型の列を持つことができます。これは、ExcelのスプレッドシートやSQLのテーブル、またはSeriesオブジェクトの辞書と考えることができます。
DataFrameは、以下のようにして作成することができます:
import pandas as pd
data = {
'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
'wins': [11, 8, 10, 15, 11, 6, 10, 4],
'losses': [5, 8, 6, 1, 5, 10, 6, 12]
}
football = pd.DataFrame(data)
print(football)
このコードは、Pythonの辞書をDataFrameに変換し、それを表示します。出力は、各行と列のラベル(インデックスと列名)とともにデータを示します。
これらのデータ型は、pandasでデータ分析を行う際の基礎となります。次に、これらのデータ型をどのように操作するかについて学んでいきましょう。
データの取り出し方: loc、iloc、head、tail
pandasのDataFrameでは、データを取り出すためのいくつかの方法が提供されています。ここでは、その中でもよく使われるloc
、iloc
、head
、tail
メソッドについて説明します。
loc
loc
は、ラベルベースのデータ選択方法で、ラベルを指定してデータを取り出します。以下に例を示します:
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df.loc['a':'c', 'A':'C'])
このコードは、行ラベルが’a’から’c’、列ラベルが’A’から’C’の範囲のデータを取り出します。
iloc
iloc
は、整数ベースのデータ選択方法で、整数を指定してデータを取り出します。以下に例を示します:
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df.iloc[0:3, 0:3])
このコードは、行インデックスが0から2、列インデックスが0から2の範囲のデータを取り出します。
head
head
メソッドは、DataFrameの先頭から指定した数の行を取り出します。引数を指定しない場合は、先頭から5行を取り出します。以下に例を示します:
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df.head(3))
このコードは、DataFrameの先頭から3行を取り出します。
tail
tail
メソッドは、DataFrameの末尾から指定した数の行を取り出します。引数を指定しない場合は、末尾から5行を取り出します。以下に例を示します:
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df.tail(3))
このコードは、DataFrameの末尾から3行を取り出します。
これらのメソッドを使うことで、DataFrameから必要なデータを効率的に取り出すことができます。次に、データの読み込みと出力について学んでいきましょう。
データの読み込みと出力
pandasは、さまざまな形式のデータを読み込み、出力する機能を提供しています。ここでは、CSVファイルとExcelファイルの読み込みと出力について説明します。
CSVファイルの読み込みと出力
CSVファイルは、データ分析でよく使われるデータ形式の一つです。pandasでは、read_csv
関数を使ってCSVファイルを読み込むことができます:
import pandas as pd
df = pd.read_csv('file.csv')
このコードは、’file.csv’という名前のCSVファイルを読み込み、その内容をDataFrameに格納します。
また、DataFrameの内容をCSVファイルに出力するには、to_csv
メソッドを使用します:
df.to_csv('output.csv')
このコードは、DataFrameの内容を’output.csv’という名前のCSVファイルに出力します。
Excelファイルの読み込みと出力
Excelファイルも、データ分析でよく使われるデータ形式の一つです。pandasでは、read_excel
関数を使ってExcelファイルを読み込むことができます:
df = pd.read_excel('file.xlsx')
このコードは、’file.xlsx’という名前のExcelファイルを読み込み、その内容をDataFrameに格納します。
また、DataFrameの内容をExcelファイルに出力するには、to_excel
メソッドを使用します:
df.to_excel('output.xlsx')
このコードは、DataFrameの内容を’output.xlsx’という名前のExcelファイルに出力します。
これらの関数とメソッドを使うことで、pandasでさまざまな形式のデータを簡単に読み込み、出力することができます。次に、データのソートについて学んでいきましょう。
データのソート
pandasでは、データをソートするための2つの主要な方法が提供されています:sort_values
とsort_index
です。
sort_values
sort_values
は、1つまたは複数の列の値に基づいてデータをソートします。以下に例を示します:
df = pd.DataFrame({
'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
'col2': [2, 1, 9, 8, 7, 4],
'col3': [0, 1, 9, 4, 2, 3],
})
df.sort_values(by=['col1'])
このコードは、’col1’の値に基づいてDataFrameをソートします。NaNは常に最後になります。
複数の列を指定することも可能で、その場合は最初の列から順にソートが行われます:
df.sort_values(by=['col1', 'col2'])
このコードは、まず’col1’の値に基づいてソートし、次に’col2’の値に基づいてソートします。
sort_index
sort_index
は、インデックスに基づいてデータをソートします。以下に例を示します:
df = pd.DataFrame({
'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
'col2': [2, 1, 9, 8, 7, 4],
'col3': [0, 1, 9, 4, 2, 3],
}, index=[1,2,3,4,5,6])
df.sort_index()
このコードは、インデックスの値に基づいてDataFrameをソートします。
これらのメソッドを使うことで、pandasのDataFrameを効率的にソートすることができます。次に、欠損値の処理について学んでいきましょう。
欠損値の処理
データ分析を行う際、欠損値(NaNやNoneなど)を適切に処理することは重要です。pandasでは、欠損値の処理を行うためのいくつかのメソッドが提供されています。
欠損値の検出
まず、欠損値を検出するためには、isna
またはisnull
メソッドを使用します:
df = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [5, np.nan, np.nan],
'C': [1, 2, 3]
})
print(df.isna())
このコードは、DataFrame内の各要素が欠損値であるかどうかを示すブール値のDataFrameを返します。
欠損値の削除
欠損値を含む行または列を削除するには、dropna
メソッドを使用します:
print(df.dropna())
このコードは、欠損値を含む行を削除した新しいDataFrameを返します。axis
パラメータを1
に設定すると、欠損値を含む列を削除します。
欠損値の補完
欠損値を他の値で補完するには、fillna
メソッドを使用します:
print(df.fillna(value='FILL VALUE'))
このコードは、欠損値を’FILL VALUE’で補完した新しいDataFrameを返します。value
パラメータには、欠損値を補完するための値または方法(平均値、中央値など)を指定します。
これらのメソッドを使うことで、pandasのDataFrame内の欠損値を効率的に処理することができます。次に、データ操作について学んでいきましょう。
データ操作: Series編とDataFrame編
pandasのSeriesとDataFrameは、データ操作を行うための多くのメソッドを提供しています。ここでは、その中でもよく使われるいくつかのメソッドについて説明します。
Seriesのデータ操作
Seriesでは、以下のようなデータ操作が可能です:
-
データの選択:ラベルまたは整数によるインデックスを使用してデータを選択できます。
python
s = pd.Series([1, 3, 5, np.nan, 6, 8], index=['A', 'B', 'C', 'D', 'E', 'F'])
print(s['B']) # ラベルによる選択
print(s[1]) # 整数による選択 -
データの変更:ラベルまたは整数によるインデックスを使用してデータを変更できます。
python
s['B'] = 10
print(s) -
データの追加:
append
メソッドを使用してデータを追加できます。python
s2 = pd.Series([10, 11], index=['G', 'H'])
s = s.append(s2)
print(s)
DataFrameのデータ操作
DataFrameでは、以下のようなデータ操作が可能です:
-
データの選択:ラベルまたは整数によるインデックスを使用してデータを選択できます。また、列名を使用して列を選択できます。
python
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df['A']) # 列名による選択
print(df.loc['a']) # ラベルによる選択
print(df.iloc[0]) # 整数による選択 -
データの変更:ラベルまたは整数によるインデックスを使用してデータを変更できます。また、列名を使用して列を変更できます。
python
df['A'] = 10
df.loc['a'] = 10
df.iloc[0] = 10
print(df) -
データの追加:
append
メソッドを使用してデータを追加できます。python
df2 = pd.DataFrame(np.random.randn(2, 4), index=list('gh'), columns=list('ABCD'))
df = df.append(df2)
print(df)
これらのメソッドを使うことで、pandasのSeriesとDataFrameで効率的にデータ操作を行うことができます。次に、統計処理について学んでいきましょう。
統計処理
pandasは、データの統計的な分析を行うための多くのメソッドを提供しています。以下に、その中でもよく使われるいくつかのメソッドについて説明します。
基本的な統計量
describe
メソッドを使用すると、各列の基本的な統計量(平均、標準偏差、最小値、最大値など)を一度に取得することができます:
df = pd.DataFrame(np.random.randn(6, 4), index=list('abcdef'), columns=list('ABCD'))
print(df.describe())
このコードは、DataFrameの各列の基本的な統計量を表示します。
平均と中央値
mean
メソッドとmedian
メソッドを使用すると、各列または行の平均値と中央値を計算することができます:
print(df.mean()) # 平均値
print(df.median()) # 中央値
相関と共分散
corr
メソッドとcov
メソッドを使用すると、各列間の相関係数と共分散を計算することができます:
print(df.corr()) # 相関係数
print(df.cov()) # 共分散
これらのメソッドを使うことで、pandasのDataFrameで効率的に統計処理を行うことができます。これらの統計処理は、データ分析や機械学習の前処理において非常に重要です。