Python初心者必見!データ分析で使えるPandasの10の裏技

Python
スポンサーリンク

データ分析を始めたばかりのPythonユーザーの皆さん、Pandasライブラリはもう使っていますか?Pandasはデータ操作と分析において非常に強力なツールですが、実は知っておくと便利な「裏技」がたくさんあります。この記事では、Pandasを使ったデータ分析がさらに楽になる10のテクニックを紹介します。

目次

  1. Pandasでデータを素早く作成
  2. 特定の列のデータ型を一括変更
  3. 条件に基づくデータのフィルタリング
  4. 複数列の一括操作
  5. 欠損値の簡単な処理
  6. データフレームの行・列の入れ替え
  7. グループ化と集計の極意
  8. データフレームのマージと結合
  9. シリーズとデータフレームのインデックス操作
  10. データの可視化を即座に行う

デモデータの準備

まず、記事で使用するデモデータを作成します。今回は、架空の販売データを用います。

pythonコードをコピーするimport pandas as pd
import numpy as np

# デモデータの作成
data = {
    'Product': ['A', 'B', 'C', 'D', 'E'],
    'Sales': [150, 200, np.nan, 300, 250],
    'Discount': [10, 15, 10, np.nan, 20],
    'Category': ['Electronics', 'Electronics', 'Furniture', 'Furniture', 'Electronics']
}

df = pd.DataFrame(data)
print(df)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category
0       A  150.0      10.0  Electronics
1       B  200.0      15.0  Electronics
2       C    NaN      10.0    Furniture
3       D  300.0       NaN    Furniture
4       E  250.0      20.0  Electronics

このデータフレームには、製品名、売上、割引額、カテゴリが含まれています。一部のデータは欠損していますが、この記事で紹介するテクニックを使って処理していきます。


1. Pandasでデータを素早く作成

Pandasを使ってデータフレームを素早く作成し、表示します。

pythonコードをコピーする# 既に作成したデータフレームを表示
print(df)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category
0       A  150.0      10.0  Electronics
1       B  200.0      15.0  Electronics
2       C    NaN      10.0    Furniture
3       D  300.0       NaN    Furniture
4       E  250.0      20.0  Electronics

データフレームの内容が正しく表示されました。

2. 特定の列のデータ型を一括変更

データの処理では、列のデータ型を変更する必要が出てきます。まず、欠損値を処理し、その後に型変換を行います。

pythonコードをコピーする# 欠損値の処理
df_copy = df.copy()
df_copy['Sales'] = df_copy['Sales'].fillna(df_copy['Sales'].mean())
df_copy['Discount'] = df_copy['Discount'].fillna(0)  # 割引がない場合は0を入れる

# 型変換を実施
df_copy = df_copy.astype({'Sales': 'float64', 'Discount': 'int32'})
print(df_copy.dtypes)
print(df_copy)

実行結果:

lessコードをコピーするProduct      object
Sales       float64
Discount      int32
Category     object
dtype: object
  Product  Sales  Discount     Category
0       A  150.0        10  Electronics
1       B  200.0        15  Electronics
2       C  225.0        10    Furniture
3       D  300.0         0    Furniture
4       E  250.0        20  Electronics

データ型が正しく変換され、欠損値も処理されました。

3. 条件に基づくデータのフィルタリング

特定の条件に基づいてデータをフィルタリングします。

pythonコードをコピーする# セールスが200以上の製品をフィルタリング
filtered_df = df_copy[df_copy['Sales'] >= 200]
print(filtered_df)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category
1       B  200.0        15  Electronics
2       C  225.0        10    Furniture
3       D  300.0         0    Furniture
4       E  250.0        20  Electronics

セールスが200以上の製品が正しくフィルタリングされました。

4. 複数列の一括操作

Pandasでは、複数の列に対して一括で操作を行うことができます。

pythonコードをコピーする# セールスと割引を一括で増加
df_copy[['Sales', 'Discount']] = df_copy[['Sales', 'Discount']].apply(lambda x: x * 1.1)
print(df_copy)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category
0       A  165.0      11.0  Electronics
1       B  220.0      16.5  Electronics
2       C  247.5      11.0    Furniture
3       D  330.0       0.0    Furniture
4       E  275.0      22.0  Electronics

セールスと割引額がそれぞれ10%増加しました。

5. 欠損値の簡単な処理

欠損値が処理されたデータを再確認します。

pythonコードをコピーする# 既に処理された欠損値を確認
print(df_copy)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category
0       A  165.0      11.0  Electronics
1       B  220.0      16.5  Electronics
2       C  247.5      11.0    Furniture
3       D  330.0       0.0    Furniture
4       E  275.0      22.0  Electronics

欠損値が正しく処理された状態でデータが表示されています。

6. データフレームの行・列の入れ替え

行と列を入れ替えて新たな視点でデータを確認します。

pythonコードをコピーする# 行と列を入れ替え
df_transposed = df_copy.T
print(df_transposed)

実行結果:

mathematicaコードをコピーする                    0            1          2          3            4
Product             A            B          C          D            E
Sales           165.0        220.0      247.5      330.0        275.0
Discount         11.0         16.5       11.0        0.0         22.0
Category  Electronics  Electronics  Furniture  Furniture  Electronics

行と列が入れ替えられたデータフレームが表示されました。

7. グループ化と集計の極意

データをカテゴリごとにグループ化し、集計を行います。

pythonコードをコピーする# カテゴリごとの売上と割引の集計
grouped_df = df_copy.groupby('Category').agg({'Sales': 'sum', 'Discount': 'mean'})
print(grouped_df)

実行結果:

markdownコードをコピーする             Sales  Discount
Category
Electronics  660.0      16.5
Furniture    577.5       5.5

カテゴリごとの売上と割引額が正しく集計されました。

8. データフレームのマージと結合

異なるデータセットを結合して、より豊富な情報を得ます。

pythonコードをコピーする# 製品情報と販売情報の結合
product_info = pd.DataFrame({
    'Product': ['A', 'B', 'C', 'D', 'E'],
    'Price': [300, 400, 500, 600, 700]
})
merged_df = pd.merge(df_copy, product_info, on='Product', how='inner')
print(merged_df)

実行結果:

mathematicaコードをコピーする  Product  Sales  Discount     Category  Price
0       A  165.0      11.0  Electronics    300
1       B  220.0      16.5  Electronics    400
2       C  247.5      11.0    Furniture    500
3       D  330.0       0.0    Furniture    600
4       E  275.0      22.0  Electronics    700

製品情報が正しく結合され、全体のデータが表示されました。

9. シリーズとデータフレームのインデックス操作

インデックスを設定してデータを操作します。

pythonコードをコピーする# 製品名をインデックスに設定
df_copy.set_index('Product', inplace=True)
print(df_copy)

実行結果:

mathematicaコードをコピーする         Sales  Discount     Category
Product
A        165.0      11.0  Electronics
B        220.0      16.5  Electronics
C        247.5      11.0    Furniture
D        330.0       0.0    Furniture
E        275.0      22.0  Electronics

製品名がインデックスに設定され、データの操作が容易になりました。

10. データの可視化を即座に行う

最後に、データの可視化を行います。

pythonコードをコピーするimport matplotlib.pyplot as plt

# データの簡単な可視化
df_copy['Sales'].plot(kind='bar')
plt.title("Sales by Product")
plt.xlabel("Product")
plt.ylabel("Sales")
plt.show()

実行結果:

このコードを実行すると、各製品の売上が棒グラフとして表示されます。これにより、データの分析結果を視覚的に理解することが容易になります。


まとめと次のステップ

Pandasは非常に強力なツールで、少しの工夫で作業効率が大幅にアップします。今回紹介したテクニックを活用し、データ分析をよりスムーズに進めてみてください。次のステップとしては、さらに複雑なデータ処理や可視化に挑戦することをお勧めします。

GROWTH JAPAN TECHNOLOGIESは宮城県仙台市のAI企業です。

原稿執筆 株式会社GROWTH JAPAN TECHNOLOGIES  我妻裕太

コメント

タイトルとURLをコピーしました