日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas简明教程:四、Pandas数据索引方式

發布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas简明教程:四、Pandas数据索引方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 1、以類似`dict`的方式訪問
          • 2、以屬性方式訪問數據
          • 3、訪問行(slicing)
          • 4、用`loc`方法訪問不同行列
          • 5、用`iloc`方法直接訪問行列
          • 6、其它方式
          • 本系列教程教程完整目錄:

1、以類似dict的方式訪問

上一篇教程開頭以dict的形式實例化了第一個DataFrame,也證實了它的確可以用類似dict的方式來獲取數據:

import pandas as pd df = pd.DataFrame({'月份': [1,2,3,4,5,2,3,4,5,1,2,3,4],'姓名':['張三','張三','張三','張三','張三','李四','李四','李四','李四','王五','王五','王五','王五'],'性別':['男','男','女','女','女','男','男','男','男','女','女','女','女'],'應發工資':[2000,2000,2000,2000,2000,1800,1800,1800,1800,1800,1800,1800,1800],'實發工資':[1500,1000,15000,1500,1500,1300,1300,1300,1300,1300,1300,1300,1300],'職位':['主犯','主犯','主犯','主犯','主犯','從犯','從犯','從犯','從犯','龍套','龍套','龍套','龍套'] })df['姓名']0 張三 1 張三 2 張三 3 張三 4 張三 5 李四 6 李四 7 李四 8 李四 9 王五 10 王五 11 王五 12 王五 Name: 姓名, dtype: object

在此基礎上,還可以進一步進行復雜的操作,例如

  • 訪問多列
df[['姓名','職位']]姓名 職位 0 張三 主犯 1 張三 主犯 2 張三 主犯 3 張三 主犯 4 張三 主犯 5 李四 從犯 6 李四 從犯 7 李四 從犯 8 李四 從犯 9 王五 龍套 10 王五 龍套 11 王五 龍套 12 王五 龍套
  • 當訪問時列的順序不同時
df[['職位','姓名']]職位 姓名 0 主犯 張三 1 主犯 張三 2 主犯 張三 3 主犯 張三 4 主犯 張三 5 從犯 李四 6 從犯 李四 7 從犯 李四 8 從犯 李四 9 龍套 王五 10 龍套 王五 11 龍套 王五 12 龍套 王五

另外,這種方式不權可以訪問數據,還可以作為索引對數據進行修改,比如交換兩個列:

df[['職位','姓名']] = df[['姓名','職位']] # 姓名和職位的對應數據發生了改變 df月份 姓名 性別 應發工資 實發工資 職位 0 1 主犯 男 2000 1500 張三 1 2 主犯 男 2000 1000 張三 2 3 主犯 女 2000 15000 張三 3 4 主犯 女 2000 1500 張三 4 5 主犯 女 2000 1500 張三 5 2 從犯 男 1800 1300 李四 6 3 從犯 男 1800 1300 李四 7 4 從犯 男 1800 1300 李四 8 5 從犯 男 1800 1300 李四 9 1 龍套 女 1800 1300 王五 10 2 龍套 女 1800 1300 王五 11 3 龍套 女 1800 1300 王五 12 4 龍套 女 1800 1300 王五
2、以屬性方式訪問數據

以下代碼可能引起不適!!!!

df.職位0 張三 1 張三 2 張三 3 張三 4 張三 5 李四 6 李四 7 李四 8 李四 9 王五 10 王五 11 王五 12 王五 Name: 職位, dtype: object

它居然支持中文變量名!!!!

注意:這里和dict類型的操作方式就有所不同了,如果是一個單純的dict我們來看:

mydict = {'a':1,'b':2}mydict.a --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-9-20721cfb64a6> in <module> ----> 1 mydict.aAttributeError: 'dict' object has no attribute 'a'

此時報錯:dict并沒有名稱為a這個屬性。而DataFrame則提供了這樣一種索引方式。

接上一篇教程,我們知道當訪問的結果是一列時,返回的結果就變成了Series類。

3、訪問行(slicing)
df[:2]月份 姓名 性別 應發工資 實發工資 職位 0 1 主犯 男 2000 1500 張三 1 2 主犯 男 2000 1000 張三df[1:5]月份 姓名 性別 應發工資 實發工資 職位 1 2 主犯 男 2000 1000 張三 2 3 主犯 女 2000 15000 張三 3 4 主犯 女 2000 1500 張三 4 5 主犯 女 2000 1500 張三

注意: 這種方式不能以單個下標進行訪問

df[2]D:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\pandas\core\frame.py in __getitem__(self, key) ...## 此處省略約10余行報錯信息KeyError: 2

注意: 不能直接像訪問數組一樣訪問單個單元信息:

df[1,2] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) # 省略約20余行報錯信息
4、用loc方法訪問不同行列
df.loc[:2,['職位']]職位 0 張三 1 張三 2 張三

而此時可以訪問單獨的一行:

df.loc[2,['職位']]職位 張三 Name: 2, dtype: object

注意:loc方法第二個位置的索引必須是表頭的列表或字符串,不能是數字!

5、用iloc方法直接訪問行列
df.iloc[1,2] '男'df.iloc[1,:2]月份 2 姓名 主犯 Name: 1, dtype: objectdf.iloc[:2,1]0 主犯 1 主犯 Name: 姓名, dtype: object

不難看到這時數據的訪問方式和數組等類型的訪問方式就基本一致了。

6、其它方式

舊的版本里面還有ix方法,不過新版已經沒有這項功能了,它的用法兼顧了loc和iloc方法。另外還有快速定位的方法at,iat,但這兩種方法除了速度較快以外也并沒有特別之處,因此不多敘述,有興趣的同學可以自行查詢官方文檔。

本系列教程教程完整目錄:

一、Pandas簡介與安裝

二、Pandas基本數據結構-DataFrame與Series

三、Pandas文件讀寫

四、Pandas數據索引方式

五、Pandas簡單統計操作及通用方式

六、Pandas條件查詢

七、Pandas缺失數據的處理(數據清洗基礎)

八、Pandas數據透視表

九、表的合并、連接、拼接(數據聚合基礎)

總結

以上是生活随笔為你收集整理的Pandas简明教程:四、Pandas数据索引方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。