パンダリバースデータフレーム

Salman Mehmood 2024年2月15日
  1. loc メソッドを使用して Pandas でエラーなしでデータ フレームを反転する
  2. Python で Pandas データ フレームを逆にする間違った方法
  3. reversed() 関数での Data Fame のワークフロー
パンダリバースデータフレーム

行と列を逆にする方法を学び、インデックスをリセットする方法も確認します。 また、初心者が Pandas でデータ フレームを反転しようとすると失敗する理由についても説明します。

loc メソッドを使用して Pandas でエラーなしでデータ フレームを反転する

ここで、コードにジャンプして、pandas ライブラリとデータ セットをインポートします。これは、同じフォルダーにある Excel ファイルからのサンプル スーパーストア データです。 サンプルのスーパーストアを確認すると、複数の列を持つ膨大な量のデータが表示されます。

import pandas as pd

Data = pd.read_excel("demo_Data.xls")
Data.head()

サンプル スーパーストア データ

ここで、理解しやすく、より意味のあるものにするために、いくつかの列を取り上げます。 そのため、まず、データ操作の対象となる列をいくつか選択します。

data = Data[["Category", "Sub-Category", "City", "Country", "Region"]]
data.head()

列を選択

私たちのタスクは、行と列を逆にすることです。最初に、レコードの総数と列の総数を確認します。

len(data), len(data.columns)

出力:

(9994, 5)

データを反転する時が来たので、次のコードを使用してデータ フレームを反転します。

data.loc[::-1]

loc メソッドを使用してデータが反転されていることがわかります。

loc を使用してデータを反転

データ フレームを逆にする方法はわかっていますが、データ フレームのインデックスは 999 から始まるため、インデックスをリセットする必要があります。 そのために、reset_index() メソッドを使用し、drop 引数は True になります。

data.loc[::-1].reset_index(drop=True)

これを実行すると、インデックスがリセットされ、最初のレコードである 9993 が 0 に変更され、すべてのレコードが同じであることがわかります。

インデックスのリセット

先に進んで列を降順に変更すると、最初の列は Region、次に Country のようになります。 これを行うには、上記と同じコードを使用しますが、わずかな変更があります。

data.loc[:, ::-1]

これは、 loc メソッドを使用して列を逆にする方法であり、コンマの後は列を逆にすることを意味し、コンマの前はすべての行を選択することを意味します。

逆列

Python で Pandas データ フレームを逆にする間違った方法

一部の初心者は、データ フレームで reversed() 関数を使用する方法についてあまり知識がないため、データ フレームを誤って反転させてエラーが発生します。

次のコードを検討してください。

data = Data[["Category", "Sub-Category", "City", "Country", "Region"]]

for i in reversed(data):
    print(data["Category"], data["Country"])

出力:

Python で Pandas データ フレームを逆にする間違った方法

初心者が上記のコード スニペットを使用してデータ フレームを逆にするのはなぜですか? さて、reversed() 関数は入れたデータ型を逆にするので、この方法でデータを逆にしようとします。

次のコードを検討してください。

data = ["Category", "Sub-Category", "City", "Country", "Region"]

for i in reversed(data):
    print(i)

データ型がリストであり、データフレームの動作が異なるため、上記のコードが完全に逆になっていることがわかります。

Region
Country
City
Sub-Category
Category

reversed() 関数での Data Fame のワークフロー

reversed() 関数でデータフレームを提供すると、舞台裏でいくつかの実装が行われます。

  1. reversed()len() 関数を呼び出し、データ フレームをその中に入れてその長さを取得します。
  2. range() 関数を呼び出して、その長さを入力します。
  3. 逆の順序で反復を開始します。

reversed() 関数を使用して、コントロールは最初にデータフレームの長さを取得し、次にそれを range() 関数内に配置して、逆の順序で反復を開始します。

その後、コントロールは最初の要素を取得し、data[9993] のように角括弧で囲みます。 ここでエラーが発生します。

また、9993 は列名ではなくインデックスであるため、9993 はデータフレームには存在しません。 上記のセクションで説明した正しいアプローチを使用できます。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Pandas Dataframe