Python Pandas入門:データ分析を効率化する

Pandasとは?データ分析における役割

なぜPandasを学ぶべきか

Pandasは、Pythonでデータ分析を行う上で必要不可欠なライブラリです。データの前処理、変換、分析を効率的に行うための様々な機能を提供しています。
データ分析の現場では、大量のデータを扱い、そこから有益な情報を抽出する作業が日常的に行われます。
Pandasは、このようなデータ操作を簡単に行えるため、データサイエンティストや分析者にとって必須のツールとなっています。
Pythonの豊富なエコシステムとの連携も容易で、データ分析の効率を大幅に向上させることができます。

Pandasを使うメリット

Pandasを利用することで、データ操作の記述量が減り、可読性の高いコードを書くことができます。また、高速なデータ処理も可能です。
Pandasは、NumPyという数値計算ライブラリをベースにしており、内部的には効率的な処理が行われています。
そのため、大量のデータに対しても高速な処理が可能で、複雑なデータ操作も簡潔に記述できます。
これにより、開発効率が向上し、より分析に集中できるようになります。

Pandasのインストールと環境構築

Pandasを使い始めるには、まずインストールが必要です。pipを使って簡単にインストールできます。また、JupyterNotebookなどの環境設定も解説します。
Pandasのインストールは、以下のコマンドで簡単に行えます。

pipinstall pandas

また、データ分析にはJupyter Notebookが便利です。JupyterNotebookをインストールすると、Webブラウザ上でコードを記述、実行し、結果をすぐに見ることができます。
JupyterNotebookのインストールは以下のコマンドで行えます。

pip installnotebook

これらの設定を済ませることで、すぐにPandasを使ったデータ分析を始めることができます。

Pandasの基本:シリーズとデータフレーム

シリーズ(Series)の作成と操作

Pandasの基本となるシリーズは、1次元のデータ構造です。リストやNumPy配列から簡単に作成できます。要素へのアクセスや操作方法を説明します。
シリーズは、ラベル付きの配列のようなもので、各要素にはインデックスが付けられています。
リストからシリーズを作成するには、以下のようにpandas.Series()を使います。

importpandas as pd
data = [10, 20, 30, 40, 50]
s =pd.Series(data)
print(s)

また、インデックスを指定することも可能です。

import pandas aspd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s =pd.Series(data,index=index)
print(s)

シリーズの要素にアクセスするには、インデックスを指定します。
print(s[‘a’])

また、NumPyの配列と同様に、スライシングも可能です。
print(s[‘b’:’d’])

データフレーム(DataFrame)の作成と操作

データフレームは、2次元のデータ構造であり、表形式のデータを扱うのに適しています。CSVファイルからの読み込みや、辞書からの作成方法を解説します。
データフレームは、行と列で構成され、各列には異なるデータ型を格納できます。
辞書からデータフレームを作成するには、以下のようにpandas.DataFrame()を使います。

importpandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30,28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df =pd.DataFrame(data)
print(df)

CSVファイルからデータフレームを読み込むには、pandas.read_csv()を使います。

importpandas as pd
df =pd.read_csv('data.csv')
print(df)

データフレームの列にアクセスするには、列名を指定します。
print(df[‘name’])

また、複数の列を選択することも可能です。
print(df[[‘name’,’age’]])

データフレームの行にアクセスするには、locやilocを使います。これらの使い方については、後ほど詳しく説明します。

データ型の確認と変換

Pandasでは、様々なデータ型を扱うことができます。データ型を確認する方法や、必要に応じてデータ型を変換する方法を説明します。
データフレームの各列のデータ型を確認するには、dtypes属性を使います。

importpandas as pd
data = {'col1': [1, 2, 3], 'col2': [1.1, 2.2, 3.3], 'col3': ['a','b', 'c']}
df =pd.DataFrame(data)
print(df.dtypes)

データ型を変換するには、astype()メソッドを使います。

df['col1']=df['col1'].astype('float')
print(df.dtypes)

よく使うデータ型には、int(整数)、float(浮動小数点数)、str(文字列)、datetime(日付時刻)などがあります。必要に応じて適切なデータ型に変換することで、メモリ使用量の削減や計算速度の向上につながります。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

データ参照と抽出

locとilocを使ったデータ参照

locとilocは、データフレームから特定の行や列を抽出するための強力なツールです。それぞれの使い方を具体例とともに解説します。
locは、ラベルを使って行や列を指定します。

importpandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30,28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df = pd.DataFrame(data,index=['row1', 'row2', 'row3'])
print(df.loc['row1','name'])
print(df.loc['row1':'row2', ['name','age']])

ilocは、整数位置を使って行や列を指定します。

print(df.iloc[0,0])
print(df.iloc[0:2,0:2])

locとilocは、データフレームの特定の箇所にアクセスするのに非常に便利です。データの探索や分析において、欠かせないツールです。

条件による行の抽出

特定の条件を満たす行だけを抽出する方法を説明します。query()メソッドや、比較演算子を使った抽出方法を解説します。
データフレームから特定の条件を満たす行を抽出するには、比較演算子を使います。

importpandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30,28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df =pd.DataFrame(data)
print(df[df['age'] >28])

query()メソッドを使うと、より複雑な条件を指定できます。

print(df.query('age >28'))
print(df.query('city =='Tokyo''))

複数の条件を組み合わせることも可能です。

print(df[(df['age'] > 25) &(df['city'] != 'Osaka')])
print(df.query('age > 25 and city !='Osaka''))

これらの方法を使いこなすことで、データフレームから必要なデータを効率的に抽出できます。

head()とtail()を使ったデータ確認

head()とtail()メソッドを使うことで、データフレームの先頭や末尾の行を簡単に確認できます。データの概要を掴むのに便利です。
dataframe.head()を使うと、データフレームの先頭の数行を表示できます。引数を指定しない場合、デフォルトでは先頭5行が表示されます。

importpandas as pd
data = {'col1': range(10), 'col2': range(10, 20)}
df =pd.DataFrame(data)
print(df.head())
print(df.head(3))

dataframe.tail()を使うと、データフレームの末尾の数行を表示できます。引数を指定しない場合、デフォルトでは末尾5行が表示されます。

print(df.tail())
print(df.tail(3))

これらのメソッドは、データの全体像を把握するのに非常に便利です。特に、大きなデータフレームを扱う際に、データの確認を効率的に行えます。

年収訴求

データの加工と整理

列の追加・削除・変更

データフレームに新しい列を追加したり、不要な列を削除したりする方法を解説します。また、既存の列のデータを変更する方法も説明します。
データフレームに新しい列を追加するには、新しい列名を指定して値を代入します。

importpandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30,28]}
df = pd.DataFrame(data)
df['gender'] = ['female', 'male','male']
print(df)

既存の列の値を変更するには、列を指定して新しい値を代入します。

df['age'] =df['age'] +1
print(df)

列を削除するには、drop()メソッドを使います。削除したい列名を引数に指定します。inplace=Trueにすると、元のデータフレームが変更されます。

df.drop('gender',axis=1, inplace=True)
print(df)

これらの操作を組み合わせることで、データフレームを柔軟に加工できます。

データの並び替え(ソート)

データフレームの行を、特定の列の値に基づいて並び替える方法を解説します。昇順・降順を指定したり、複数列でソートする方法も説明します。
データフレームを特定の列の値に基づいて並び替えるには、sort_values()メソッドを使います。引数には、並び替えに使用する列名を指定します。

importpandas as pd
data = {'name': ['Bob', 'Alice', 'Charlie'],
'age': [30, 25,28]}
df = pd.DataFrame(data)
df_sorted =df.sort_values('age')
print(df_sorted)

デフォルトでは昇順に並び替えられます。降順に並び替えるには、ascending=Falseを指定します。

df_sorted= df.sort_values('age',ascending=False)
print(df_sorted)

複数の列で並び替えるには、列名のリストを引数に指定します。

df_sorted= df.sort_values(['age','name'])
print(df_sorted)

これらの機能を活用することで、データを扱いやすい形に整理できます。

データの統計量

データの平均値、中央値、標準偏差などの統計量を算出する方法を解説します。describe()メソッドを使うと、データの概要をまとめて確認できます。
データフレームの各列の平均値を算出するには、mean()メソッドを使います。

importpandas as pd
data = {'col1': [1, 2, 3, 4, 5], 'col2': [2, 4, 6, 8, 10]}
df =pd.DataFrame(data)
print(df.mean())

中央値を算出するには、median()メソッドを使います。

print(df.median())

標準偏差を算出するには、std()メソッドを使います。

print(df.std())

describe()メソッドを使うと、これらの統計量をまとめて表示できます。

print(df.describe())

これらの統計量は、データの分布や傾向を把握するのに役立ちます。

年収訴求

データ入出力と実践的な活用

CSVファイルへの書き出し

加工したデータフレームをCSVファイルに書き出す方法を解説します。書き出す際に、文字コードや区切り文字などを指定する方法を説明します。
データフレームをCSVファイルに書き出すには、to_csv()メソッドを使います。引数には、ファイル名を指定します。

importpandas as pd
data = {'name': ['Alice', 'Bob'], 'age': [25, 30]}
df =pd.DataFrame(data)
df.to_csv('output.csv',index=False)

index=Falseを指定すると、インデックスが出力されなくなります。
区切り文字を指定するには、sep引数を使います。

df.to_csv('output.csv',sep='\t',index=False)

文字コードを指定するには、encoding引数を使います。

df.to_csv('output.csv',encoding='utf-8', index=False)

これらのオプションを適切に指定することで、様々な形式でCSVファイルを出力できます。

欠損値の処理

欠損値(NaN)の扱い方について説明します。欠損値の確認、補完、削除など、状況に応じた処理方法を解説します。
データフレームに欠損値があるかどうかを確認するには、isnull()メソッドを使います。欠損値がある要素はTrue、ない要素はFalseになります。

importpandas as pd
import numpy as np
data = {'col1': [1, 2, np.nan], 'col2': [4,np.nan, 6]}
df =pd.DataFrame(data)
print(df.isnull())

欠損値の数を数えるには、sum()メソッドを組み合わせます。

print(df.isnull().sum())

欠損値を特定の値で補完するには、fillna()メソッドを使います。

df_filled=df.fillna(0)
print(df_filled)

欠損値を削除するには、dropna()メソッドを使います。

df_dropped=df.dropna()
print(df_dropped)

これらの処理を適切に行うことで、欠損値によるデータ分析への影響を最小限に抑えることができます。

Pandasのまとめと今後の学習

この記事で学んだPandasの基本を振り返り、さらなる学習ステップについて紹介します。より高度なデータ分析に向けて、Pandasを使いこなしましょう。
この記事では、Pandasの基本的な使い方について解説しました。
シリーズやデータフレームの作成、データ参照、抽出、加工、整理、統計量の算出、データ入出力、欠損値の処理など、データ分析に必要な基本的な操作を学ぶことができました。
さらに高度なデータ分析を行うためには、Pandasのより深い機能について学ぶ必要があります。
例えば、groupby()メソッドを使った集計処理、merge()メソッドを使ったデータ結合、pivot_table()メソッドを使ったピボットテーブルの作成など、複雑なデータ操作を効率的に行うための方法を学ぶと良いでしょう。
また、データ可視化ライブラリであるMatplotlibやSeabornと組み合わせることで、より効果的なデータ分析が可能になります。
継続的な学習を通じて、データ分析のスキルを向上させ、より高度な分析に挑戦していきましょう。
Pandasは、データ分析において非常に強力なツールであり、使いこなすことでデータ分析の効率と質を大幅に向上させることができます。日々の学習を通して、Pandasを自分のものにしていきましょう。

広告
侍エンジニア塾