データサイエンティストが知っておくべき10の必須パンダ機能
データサイエンティスト必携!パンダ(Pandas)の10の必須機能
現代のデータ駆動の世界では、データ分析と洞察力は最大限に活用するのを助け、より良い意思決定をサポートします。企業の観点からは、競争上の優位性を提供し、プロセス全体をパーソナライズします。
このチュートリアルでは、最も強力なPythonライブラリであるpandas
を探求し、データ分析に重要な関数について議論します。初心者でもシンプルかつ効率的なので、このチュートリアルに従うことができます。システムにPythonがインストールされていない場合は、Google Colaboratoryを使用できます。
データのインポート
そのリンクからデータセットをダウンロードできます。
import pandas as pddf = pd.read_csv("kaggle_sales_data.csv", encoding="Latin-1") # データをロードdf.head() # 最初の5つの行を表示
出力:
データの探索
このセクションでは、データについてさらに詳しく知るためのさまざまな関数について説明します。データの表示や平均値、最小/最大値の取得、またはデータフレームに関する情報の取得などです。
1. データの表示
df.head()
: サンプルデータの最初の5つの行を表示します
df.tail()
: サンプルデータの最後の5つの行を表示します
df.sample(n)
: サンプルデータからランダムなn行を表示します
df.sample(6)
df.shape
: サンプルデータの行数と列数(次元)を表示します。
(2823, 25)
これは、データセットが2823行、各行には25列があることを示します。
2. 統計
このセクションには、データに関して平均、最小/最大値、四分位などの統計を実行するのに役立つ関数が含まれています。
df.describe()
: サンプルデータの各列の基本統計量を取得します
-
df.info()
: 使用されているデータ型と各列の非nullの個数に関する情報を取得します。 -
df.corr()
: データフレームのすべての整数列間の相関行列を取得します。
df.memory_usage()
: 各列が消費するメモリの量を表示します。
3. データ選択
特定の行、列、または複数の列のデータを選択することもできます。
df.iloc[row_num]
: インデックスに基づいて特定の行を選択します
例:
df.iloc[0]
df[col_name]
: 特定の列を選択します
例:
df["SALES"]
出力:
df[[‘col1’, ‘col2’]]
: 指定した複数の列を選択します
例:
df[["SALES", "PRICEEACH"]]
出力:
4. データクリーニング
これらの関数は欠損データを処理するために使用されます。データにはいくつかの欠損値やゴミ値を含む行がありますが、これらはトレーニング済みモデルのパフォーマンスに悪影響を及ぼす可能性があるため、これらの欠損値を修正または削除することが常に望ましいです。
df.isnull()
: データフレーム内の欠損値を特定します。df.dropna()
: 任意の列に欠損値を含む行を削除します。df.fillna(val)
: 引数で指定されたval
に欠損値を埋めます。df[‘col’].astype(new_data_type)
: 選択した列のデータ型を別のデータ型に変換できます。
例:
df["SALES"].astype(int)
SALES列のデータ型を浮動小数点から整数に変換しています。
5. データ分析
ここでは、グループ化、ソート、およびフィルタリングなど、データ分析に役立つ関数を使用します。
- 集計関数:
名前で列をグループ化し、合計、最小/最大、平均などの集計関数を適用することができます。
df.groupby("col_name_1").agg({"col_name_2": "sum"})
例:
df.groupby("CITY").agg({"SALES": "sum"})
各都市の売上合計を返します。
複数の集計を一度に適用したい場合は、次のように書くことができます。
例:
aggregation = df.agg({"SALES": "sum", "QUANTITYORDERED": "mean"})
出力:
SALES 1.003263e+07QUANTITYORDERED 3.509281e+01dtype: float64
- データのフィルタリング:
特定の値または条件に基づいて行のデータをフィルタリングすることができます。
例えば、
df[df["SALES"] > 5000]
売上が5000より大きい行を表示します。
query()
関数を使用してデータフレームをフィルタリングすることもできます。これも同じ出力を生成します。
例えば、
df.query("SALES" > 5000)
- データのソート:
特定の列を昇順または降順でデータをソートすることができます。
例えば、
df.sort_values("SALES", ascending=False) # データを降順でソートします
- ピボットテーブル:
特定の列を使用してデータをまとめるピボットテーブルを作成することができます。これは、特定の列の効果だけを考慮したいときにデータを分析するのに非常に便利です。
例えば、
pd.pivot_table(df, values="SALES", index="CITY", columns="YEAR_ID", aggfunc="sum")
これを説明します。
values
: テーブルのセルを埋めるための列を含みます。index
: ピボットテーブルの行インデックスとなる列を使用し、この列の各ユニークなカテゴリはピボットテーブルの行になります。columns
: ピボットテーブルのヘッダーを含み、各ユニークな要素はピボットテーブルの列になります。aggfunc
: 以前に説明した集計関数です。
出力:
この出力は、特定の都市の特定の年の総売上を示すチャートです。
6. データフレームの結合
複数のデータフレームを水平または垂直に結合できます。2つのデータフレームを連結し、1つのマージされたデータフレームを返します。
例えば、
combined_df = pd.concat([df1, df2])
共通の列を基準に2つのデータフレームをマージすることもできます。共通の識別子を共有する2つのデータフレームを結合したい場合に便利です。
例えば、
merged_df = pd.merge(df1, df2, on="common_col")
7. カスタム関数の適用
必要に応じて、行または列にカスタム関数を適用することができます。
例えば、
def cus_fun(x): return x * 3df["Sales_Tripled"] = df["SALES"].apply(cus_fun, axis=0)
各行の売上値をトリプルにするカスタム関数を作成しました。axis=0
は列に対してカスタム関数を適用したいことを意味し、axis=1
は行に対して関数を適用したいことを意味します。
以前の方法では、別々の関数を記述し、それをapply()メソッドから呼び出す必要がありました。Lambda関数を使用すると、apply()メソッド自体でカスタム関数を使用することができます。どのように行うかを見てみましょう。
df["Sales_Tripled"] = df["SALES"].apply(lambda x: x * 3)
Applymap:
1行のコードでデータフレームのすべての要素にカスタム関数を適用することもできます。ただし、これはデータフレームのすべての要素に適用されることを覚えておく必要があります。
たとえば、
df = df.applymap(lambda x: str(x))
これにより、データフレームのすべての要素のデータ型が文字列に変換されます。
8. 時系列分析
数学において、時系列分析は特定の時間間隔で収集されたデータを分析することを意味し、pandasにはこの種の分析を実行するための関数があります。
DateTimeオブジェクトモデルへの変換:
日付列を簡単なデータ操作のためにdatetime形式に変換することができます。
たとえば、
df["ORDERDATE"] = pd.to_datetime(df["ORDERDATE"])
出力:
移動平均の計算:
このメソッドを使用すると、データを表示するための移動ウィンドウを作成することができます。ウィンドウのサイズを任意に指定することができます。ウィンドウサイズが5の場合、それはその時点での5日間のデータウィンドウを意味します。データの変動を除去し、時間の経過に伴うパターンを特定するのに役立ちます。
たとえば、
rolling_avg = df["SALES"].rolling(window=5).mean()
出力:
9. クロスタブ
表の2つの列間でクロスタブを作成することができます。これは通常、さまざまなカテゴリの出現頻度を示す頻度表です。これにより、異なる地域間でカテゴリの分布を理解することができます。
たとえば、
COUNTRY
とDEALSIZE
の間のクロスタブを取得します。
cross_tab = pd.crosstab(df["COUNTRY"], df["DEALSIZE"])
これにより、異なる国で注文サイズ(‘DEALSIZE’)が表示されます。
10. 外れ値の処理
データの外れ値とは、特定のポイントが平均範囲をはるかに超えていることを意味します。例を通じて理解しましょう。3、5、6、46、8という5つのポイントがあるとします。これらのうち、数字46は他のポイントの平均から大幅に外れたものであると明らかです。これらの外れ値は、正確な統計を歪める可能性があり、データセットから削除する必要があります。
ここで、データの潜在的な外れ値を見つけるためにpandasが役立ちます。外れ値を見つけて処理するための一般的な手法である四分位範囲(IQR)と呼ばれる方法を使用することができます。この方法についての情報を読みたい場合は、こちらで詳細をご覧いただけます。詳しく知りたい場合は、こちらをご覧ください。
パンダを使用してそれを行う方法を見てみましょう。
Q1 = df["SALES"].quantile(0.25)Q3 = df["SALES"].quantile(0.75)IQR = Q3 - Q1lower_bound = Q1 - 1.5 * IQRupper_bound = Q3 + 1.5 * IQRoutliers = df[(df["SALES"] < lower_bound) | (df["SALES"] > upper_bound)]
Q1はデータの25パーセンタイルに相当する第1四分位であり、Q3はデータの75パーセンタイルに相当する第3四分位です。
lower_bound
変数は、潜在的な外れ値を見つけるために使用される下限を格納します。その値は、Q1の1.5倍のIQRを下回る値に設定されています。同様に、upper_bound
は、Q3の上方1.5倍のIQRを計算します。
その後、下限または上限を下回るまたは上回る外れ値を除外します。
まとめる
Pythonのpandasライブラリを使用すると、高度なデータ分析と操作が可能になります。これはその一部です。もっと多くのツールはこの pandasドキュメントで見つけることができます。覚えておくべき重要なことは、技術の選択肢が特定のニーズや使用中のデータセットに合わせることができるということです。
[Aryan Garg](https://www.linkedin.com/in/aryan-garg-1bbb791a3/)はB.Tech. 電気工学の学生で、現在は学部の最終学年です。彼の興味はWeb開発と機械学習の分野にあります。彼はこの興味を追求し、これらの方向でさらに多くの活動を行いたいと考えています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles