初心者が知っておくべきパンダの機能トップ10

パイソン, 12月19日-2024年5分で読める

Pandasは、データ操作や分析の世界に飛び込むデータアナリストやPythonプログラマーにとって、頼りになるライブラリです。直感的な構文と強力なデータ構造により、膨大なデータセットを管理できるだけでなく、効率的に扱うことができます。CSVファイルのインポート、乱雑なデータセットのクリーニング、データトレンドの分析など、Pandasには必要なツールが揃っています。

Pandasの学習を始めたばかりの方向けに、初心者がマスターすべき10個の必須関数とメソッドを紹介します。
ここでは、各メソッドの概要とその機能を簡単に説明します:

  • read_csv():CSVファイルからPandas DataFrameにデータをロードします。
  • ヘッド():DataFrame の最初の数行を表示します。
  • info():列のタイプや欠損値など、DataFrame の簡潔な要約を提供します。
  • describe():数値列の記述統計量を生成する。
  • isnull():DataFrame 内の欠損データを特定する。
  • ドロップナ:データが欠落している行または列を削除する。
  • フィルナ():欠損データを指定された値で置き換える。
  • groupby():1つまたは複数の列に基づいてデータをグループ化し、集約関数を適用します。
  • sort_values():DataFrameを1つ以上の列でソートします。
  • apply():DataFrameの行または列にカスタム関数を適用する。

前提条件

まず、あなたのマシンにPythonがインストールされていることを確認してください。インストールされていない場合は、 このリンクからダウンロードできる。
Pythonがセットアップされたら、Pandasライブラリがインストールされていることを確認する。インストールされていない場合は、以下のコマンドで簡単に追加できる:

pipinstallpandas

以下の不動産ダミー・データセットを例に挙げる:

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
101ニューヨーク3275000018002023-05-15
102サンフランシスコ2185000014002023-06-01
103ロサンゼルス4325002023-04-10
104シカゴ326500001700
105マイアミ54120000035002023-03-22
106ヒューストン4345000020002023-07-01

Pandasの関数とメソッドトップ10

1. read_csv():CSV ファイルから Pandas DataFrame にデータを読み込みます。

pandasを使用する最初のステップは、データを読み込んで処理や分析の準備をすることです。pandasのDataFrameにデータをインポートする最も一般的な方法の1つは、read_csv()関数です。

コードの例:

pdとしてpandas をインポートする
# データセットを Pandas DataFrame に読み込む
file_path ="real_estate_listings.csv" # 実際のファイルパスに置き換える

# DataFrameを作成する
df = pd.read_csv(file_path)

まず、pandasライブラリをインポートする。使用方法 pd は、コードを単純化するために開発者の間でよく使われる慣例である。例えば pandas.read_csv()を使えばよい。 pd.read_csv()コードがより簡潔で読みやすくなる。

次に、Pandas DataFrame にロードしたい CSV ファイルのパスを指定します。次に、変数を作成し リード_csv メソッドを使用して、ファイルを DataFrame にロードします。

主なパラメーター

では、このメソッドに従ういくつかの重要なパラメータを探ってみよう:

  • 区切り文字: CSVファイルで使用する区切り文字を指定します(例: ,, ;, \t)。
df= pd.read_csv(file_path, delimiter=',')
  • インデックス・コル:このテーブルでは、各物件リストは""内のIDで識別されます。プロパティID"カラムを使用します。pandasがこのカラムを各プロパティの一意識別子として使用するようにするには、明示的にこのカラムをIDカラムとして設定します。そうしないと、pandasは自動的に独自のID値を生成し、各リストに割り当てます。
df= pd.read_csv(file_path, index_col='PropertyID')
  • ユセコルス:CSVファイルには多数のカラムが含まれているが、必要なのは一部のカラムだけである場合、pandasでは特定のパラメータを使用して簡単にこれを実現できます。
df= pd.read_csv(file_path, usecols=['Location','Price','Bedrooms'])

2. head() と tail():データの検査

データがDataFrameにロードされたので、それを探索することができます。そのために、Pandasは2つの便利なメソッドを提供しています: ヘッド() そして テール().これらのメソッドは、データセットの最初の行や最後の行を素早く検査するために不可欠です。

  • head():このメソッドは、デフォルトではデータセットの最初の 5 行を表示します。データが正しく読み込まれたことを確認したり、 その構造をチェックしたりするのに便利です。
  • tail() を使用します:このメソッドは head() と同じように動作しますが、 代わりに最後の数行を表示します。データセットの最後を調べる際に有用で、 特にデータが完全なものであるか、あるいは末尾のレコードに欠損値があるかを調べる際に便利です。

コードの例:

# 最初の5行を表示する
print(df.head())
# 最後の3行を表示
print(df.tail(3))

出力 ヘッド():

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
101ニューヨーク3275000018002023-05-15
102サンフランシスコ2185000014002023-06-01
103ロサンゼルス4325002023-04-10
104シカゴ326500001700
105マイアミ54120000035002023-03-22

出力 テール():

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
104シカゴ326500001700
105マイアミ54120000035002023-03-22
106ヒューストン4345000020002023-07-01

3. info() - データフレームの構造を理解する

info()関数は、DataFrame の簡潔な要約を提供します。これには、以下のような詳細が含まれます:

  • 行と列の数。
  • カラム名とそのデータ型。
  • 各列の非NULL値のカウント。

この方法は、データセットの構造を素早く理解し、欠損値や不正なデータ型などの問題を発見するのに便利である。

コードの例:

# DataFrameの簡潔な要約を取得する
print(df.info())

上のコードは次のような出力を生成する:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
#   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
0   PropertyID      6 non-null      int64 
1   Location        6 non-null      object
2   Bedrooms        6 non-null      int64 
3   Bathrooms       6 non-null      int64 
4   Price           5 non-null      float64
5   SquareFootage   6 non-null      int64 
6   ListingDate     5 non-null      object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes

4. describe():要約統計を生成する

について describe() メソッドは、次のような主要な統計指標を素早く要約してくれる。 卑しい, 標準偏差, パーセンタイルなどなど。デフォルトでは describe() は数値データを扱うが、カテゴリーデータも扱うことができ、データの種類に応じてカスタマイズされた洞察を提供する。

主なパラメーター

  • パーセンタイル:どのパーセンタイルを返すかを指定する0から1までの数値のリスト。デフォルトはNoneで、25パーセンタイル、50パーセンタイル、75パーセンタイルを返す。続きを読む これ.
  • 含む:サマリーに含めるデータ型のリスト。int、float、object(文字列用)などのデータ型を指定できる。デフォルトはNoneで、すべての数値型が含まれます。
  • 除外:サマリーから除外するデータタイプのリスト。このパラメータは なし デフォルトでは、除外されるタイプはない。

コードの例:

プリント(df.describe())

コードの出力は以下の通り:

       物件ID所在地         価格 平方フィート 掲載日
カウント 6.000000 6 6.000000... 5.000000e+00 6.000000 5
ユニークNaN6NaN ...           NaN NaN5
トップNaN ニューヨーク NaN ...           ニューヨーク NaN ...
freqNaN1NaN ...           NaN NaN1
平均 103.500000NaN 3.500000... 7.800000e+05 2150.000000NaN
標準値 1.870829NaN1.048809...2.774887e+05 755.645419NaN
最小 101.000000NaN 2.000000... 4.500000e+05 1400.000000NaN
25% 102.250000NaN 3.000000... 6.500000e+05 1725.000000NaN
50% 103.500000NaN 3.500000... 7.500000e+05 1900.000000NaN
75% 104.750000NaN 4.000000... 8.500000e+05 2375.000000NaN
最大 106.000000NaN 5.000000... 1.200000e+06 3500.000000NaN

各統計の解説

  • カウント:各列の欠落していない項目の数。
    • カウント = 6 にとって ベッドルームすべての行が有効なデータを持っていることを示す。
  • 平均:列の平均値。
    • 平均 = 3.5 にとって ベッドルームの平均を示す。 3.5ベッドルーム 物件につき
  • 標準:標準偏差:平均からの値の広がりを示す。
    • 標準偏差 = 1.048809 にとって ベッドルームつまり、ベッドルーム数には適度なばらつきがある。
  • 最小/最大:最小値と最大値。
    • min = 2 そして max = 5 にとって ベッドルーム.
  • 25%、50%、75%(四分位数):データの広がりを表す:
    • 25%:データの25%が該当する以下の値(第1四分位値)。
    • 50%:中央値。
    • 75%:データの75%が該当する値(第3四分位値)。

5. isnull():欠損データの特定

について isnull() 関数は、DataFrame内の欠損データを特定するのに役立ちます。この関数は、元のDataFrameと同じ形状のDataFrameを返します。 データが欠落している場合 NaN そして それ以外の場合。この関数は を使用して、列または行にまたがる欠損値をカウントします。

コードの例:

# 欠損値を特定する
print(df.isnull())
# 各列の欠損値を数える
print(df.isnull().sum())

df.isnull() 出力:

  物件ID  所在地  ベッドルーム  バスルーム  価格  面積  掲載日
0                                           
1                                           
2                                            
3                                            
4                                           
5                                           

df.isnull().sum() 出力:

物件ID 0
所在地 0
ベッドルーム 0
バスルーム 0
価格 1
平方フィート 0
リスト日付 1
dtype: int64

6. dropna():欠損データの削除

について ドロップナ 関数が削除する または 欠損データあり NaN を DataFrame から削除します。デフォルトでは、値が欠落している行を削除します。列のみを削除したり、すべての値や特定のサブセットの値が欠落している行や列を削除したりするように、動作をカスタマイズすることができます。

コードの例:

# 欠損 値の ある行を削除する
df_dropped_rows = df.dropna()
print(df_dropped_rows)

# 欠損 値の ある列を削除する
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)

をすべて削除した後のDataFrameは以下のようになる。 入り NaN 価値観の違いだ:

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
101ニューヨーク3275000018002023-05-15
102サンフランシスコ2185000014002023-06-01
105マイアミ54120000035002023-03-22
106ヒューストン4345000020002023-07-01

以下は 入り NaN 値を削除した。

プロパティID所在地ベッドルームバスルームスクエアフッテージ
101ニューヨーク321800
102サンフランシスコ211400
103ロサンゼルス432500
104シカゴ321700
105マイアミ543500
106ヒューストン432000

7. fillna():欠損データの置換

について フィルナ() 関数が欠損データを置き換える NaN を指定された値で返します。パンダの ドロップナ メソッドは、DataFrame から NULL 値を効率的に処理・削除します。 フィルナ() メソッドは、次のような柔軟なソリューションを提供する。 NaN 値を選択した指定値で埋める。このメソッドは、固定値である 卑しい, 中央値, モードまたはその他の計算された統計。

コードの例:

# 'Price'列の欠損値を平均価格で埋める df['Price'] = 
df['Price'].fillna(df['Price'].mean()) 
print(df)

コードの出力は NaN 値が平均価格に置き換わった。

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
101ニューヨーク3275000018002023-05-15
102サンフランシスコ2185000014002023-06-01
103ロサンゼルス4378000025002023-04-10
104シカゴ326500001700NaN
105マイアミ54120000035002023-03-22
106ヒューストン4345000020002023-07-01

について 掲載日 カラムには NaN 値を使用する。計算を実行する代わりに、単に"不明.その方法はこうだ;

# 'ListingDate' 列の欠損値をプレースホルダで埋める
df['ListingDate'] =df['ListingDate'].fillna('Unknown')
print(df)

データフレームは次のようになる:

プロパティID所在地ベッドルームバスルーム価格スクエアフッテージ掲載日
101ニューヨーク3275000018002023-05-15
102サンフランシスコ21NaN14002023-06-01
103ロサンゼルス4378000025002023-04-10
104シカゴ326500001700不明
105マイアミ54120000035002023-03-22
106ヒューストン4345000020002023-07-01

8. groupby():データのグループ化と集計

Pandasのgroupby()関数は、DataFrameを1つ以上の列に基づいたグループに分割し、効率的なデータ分析や集計を可能にする多機能で強力なツールです。
この関数は、分割-適用-結合の原則に基づいて動作します。
まず、データがグループに分割されます。
次に、指定された関数が各グループに適用されます。
最後に、結果が新しい DataFrame に結合されます。
この合理的なアプローチは、複雑なデータ操作タスクを簡素化し、分析効率を高めます。

コードの例:

例えば、場所ごとに物件の平均価格を計算したり、寝室カテゴリーごとに物件数をカウントしたりすることができます。

# 場所'  グループ化 し、平均価格を計算する
avg_price_by_location = df.groupby('Location')['Price'].mean()
print(avg_price_by_location)
# ベッドルーム'  グループ化 し、総面積を計算する
total_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()
print(total_sqft_by_bedrooms)
# 複数の列で グループ化 し、カウントを計算する
count_by_location_bedrooms = df.groupby(['Location','Bedrooms']).size()
print(count_by_location_bedrooms)

場所別の平均価格:

所在地
シカゴ 650000.0
ヒューストン 450000.0
ロサンゼルスNaN
マイアミ 1200000.0
ニューヨーク 750000.0
サンフランシスコ850000.0
名前価格, d型: float64

ベッドルーム別の総面積

寝室
2    1400
3    3500
4    4500
5    3500

場所とベッドルーム別のカウント:

ロケーションベッドルーム
シカゴ 3 1
ヒューストン 4 1
ロサンゼルス 4 1
マイアミ 5 1
ニューヨーク 3 1
サンフランシスコ2 1
dtype: int64

9. sort_values():データの並べ替え

sort_values()関数は、DataFrameを1つ以上のカラムで昇順または降順にソートするために使用されます。並べ替えは、データの順位付けや、極端な値の特定(例えば、最高値の物件)、あるいは単に読みやすくするためのデータセットの整理に不可欠です。

コードの例:

# '価格'の降順でソートする
df_sorted_by_price = df.sort_values(by='Price',ascending=False)
print(df_sorted_by_price)
# 場所'で昇順にソートする
df_sorted_by_location = df.sort_values(by='Location')
print(df_sorted_by_location)
# 複数のカラムでソートする:まず'ベッドルーム'(昇順)でソートし、次に'価格'(降順)でソートする
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms','Price'], ascending=[True,False]) # 複数のカラムでソートする。
print(df_sorted_by_bedrooms_price)

価格順(降順):

  物件ID所在地      価格 平方フィート 掲載日
4 105Miami5... 1200000.0 3500 2023-03-22
1 102サンフランシスコ2...  850000.0 1400 2023-06-01
0 101ニューヨーク3...  750000.0 1800 2023-05-15
3 104シカゴ3...  650000.0 1700NaN
5 106ヒューストン  450000.0 2000 2023-07-01
2 103ロサンゼルス4...       2500 2023-04-10

場所順(昇順):

[6行× 7 列]
  物件ID 所在地      価格 平方フィート 掲載日
3 104 シカゴ 3 . ..   650000.0 1700 NaN
5 106 ヒューストン   450000.0 2000 2023-07-01
2 103 ロサンゼルス 4 . ..        2500 2023-04-10
4 105 マイアミ 5 . ..  1200000.0 3500 2023-03-22
0 101 ニューヨーク 3 . ..   750000.0 1800 2023-05-15
1 102 サンフランシスコ 2 . ..   850000.0 1400 2023-06-01

ベッドルーム(昇順)と価格(降順)で並べ替えます:

  物件ID所在地      価格 平方フィート 掲載日
1 102サンフランシスコ2...  850000.0 1400 2023-06-01
0 101ニューヨーク3...  750000.0 1800 2023-05-15
3 104シカゴ3...  650000.0 1700NaN
5 106ヒューストン  450000.0 2000 2023-07-01
2 103ロサンゼルス4...       2500 2023-04-10
4 105マイアミ5... 1200000.0 3500 2023-03-22

10. apply():カスタム関数をデータに適用する

apply()関数を使用すると、DataFrameの行や列にカスタム関数を適用することができます。Pandasの組み込み関数を超えた、要素単位の変換や計算、条件演算を行うための強力なメソッドです。

コードの例:

平方フィートあたりの価格を計算するために新しい列を作成する例を見てみよう。

# 平米あたりの価格を計算するカスタム関数を 定義する
def price_per_sqft(price, sqft):
  returnprice/sqft if sqft!= 0 else 0

# カスタム関数を 適用して 新しい カラムを 作成する
df['PricePerSqFt']=df.apply(lambdarow: price_per_sqft(row['Price'],row['SquareFootage']),axis=1)
print(df)

上記コードの出力は以下の通り:

  物件ID所在地  坪数 掲載日 価格坪単価
0 101ニューヨーク3...          1800 2023-05-15 416.666667
1 102サンフランシスコ2...          1400 2023-06-01 607.142857
2 103ロサンゼルス4...2500 2023-04-10NaN
3 104シカゴ3...          1700NaN382.352941
4 105マイアミ5...          3500 2023-03-22 342.857143
5 106ヒューストン4...2000 2023-07-01 225.000000

他の例としては、地名を大文字に変換することが挙げられる;

# 場所名をすべて大文字にする変換を適用する
df['Location'] =df['Location'].apply(lambda x: x.upper())
print(df)

これがその様子だ:

   物件ID所在地      価格 平方フィート 掲載日
0 101ニューヨーク3...  750000.0 1800 2023-05-15
1 102サンフランシスコ2...  850000.0 1400 2023-06-01
2 103ロサンゼルス4...        NaN2500 2023-04-10
3 104シカゴ3...  650000.0 1700NaN
4 105マイアミ5... 1200000.0 3500 2023-03-22
5 106ヒューストン  450000.0 2000 2023-07-01

結論

このガイドでは、データ分析に不可欠な10の Pandas 関数について説明します。 read_csv() そして info() のような方法で洗浄し、変身させる。 isnull(), フィルナ()そして apply().これらの関数はあらゆるデータ分析ワークフローの基礎となり、データセットのクリーニング、操作、要約を効率的に行うことができます。これらの関数をマスターすることで、実世界のデータ課題に自信を持って対処できるようになります。今すぐ練習を開始し、これらのツールがどのように分析タスクを簡素化できるかを探求してください!