パンダリバースデータフレーム
-
loc
メソッドを使用して Pandas でエラーなしでデータ フレームを反転する - Python で Pandas データ フレームを逆にする間違った方法
-
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
メソッドを使用してデータが反転されていることがわかります。
データ フレームを逆にする方法はわかっていますが、データ フレームのインデックスは 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"])
出力:
初心者が上記のコード スニペットを使用してデータ フレームを逆にするのはなぜですか? さて、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()
関数でデータフレームを提供すると、舞台裏でいくつかの実装が行われます。
reversed()
はlen()
関数を呼び出し、データ フレームをその中に入れてその長さを取得します。range()
関数を呼び出して、その長さを入力します。- 逆の順序で反復を開始します。
reversed()
関数を使用して、コントロールは最初にデータフレームの長さを取得し、次にそれを range()
関数内に配置して、逆の順序で反復を開始します。
その後、コントロールは最初の要素を取得し、data[9993]
のように角括弧で囲みます。 ここでエラーが発生します。
また、9993 は列名ではなくインデックスであるため、9993 はデータフレームには存在しません。 上記のセクションで説明した正しいアプローチを使用できます。
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