iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
佛心分享-讓我升級的那些書

菜雞學習 pandas 的 30 日讀書分享系列 第 12

菜雞學習 pandas 的 30 日讀書分享【Day 12】DataFrame (四)

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250811/20168290uTAi5cZElD.jpg

DataFrame (四)

del 關鍵字可以刪除欄位。例如,加入新的一欄,裡面儲存 state 欄是否等於 Ohio 的布林值:

In [68]: frame2["eastern"] = frame2["state"] == "Ohio"

In [69]: frame2
Out[69]: 
     year    state    pop  debt  eastern
0    2000     Ohio    1.5   NaN     True
1    2001     Ohio    1.7   NaN     True
2    2002     Ohio    3.6   NaN     True
3    2001   Nevada    2.4   NaN    False
4    2002   Nevada    2.9   NaN    False
5    2003   Nevada    3.2   NaN    False

使用 del 方法來移除這一欄:

In [70]: del frame2["eastern"]

In [71]: frame2.columns
Out[71]: Index(['year', 'state', 'pop', 'debt'], dtype='object')

另一種常見的資料型態是字典裡面的字典:

In [72]: populations = {"Ohio": {2000: 1.5, 2001: 1.7, 2002: 3.6},
                        "Nevad": {2001: 2.4, 2002: 2.9}}

如果將嵌套的字典傳給 DataFrame,pandas 會將外面的字典索引鍵視為直欄,將裡面的索引鍵視為橫列索引:

In [73]: frame3 = pd.DataFrame(populations)

In [74]: frame3
Out[74]:
     Ohio  Nevada
2000  1.5     NaN
2001  1.7     2.4
2002  3.6     2.9

使用類似 NumPy 陣列的語法來轉置 DataFrame (對調列與欄):

In [75]: frame3.T
Out[75]:
       2000  2001  2002
Ohio    1.5   1.7   3.6
Nevada  NaN   2.4   2.9

結果的索引是藉由結合內部字典的索引鍵來產生,但如果有指定明確的索引就不是這麼回事了:

In [76]: pd.DataFrame(populations, index=[2001, 2002, 2003])
Out[76]:
      Ohio  Nevada
2001   1.7     2.4
2002   3.6     2.9
2003   NaN     NaN

Series 的字典也能以相同的方式來處理:

In [77]: pdata = {"Ohio": frame3["Ohio"][:-1],
....:             "Nevada": frame3["Nevada"][:2]}

In [78]: pd.DataFrame{pdata)
Out[78]:
      Ohio Nevada
2000   1.5    NaN
2001   1.7    2.4

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習 pandas 的 30 日讀書分享【Day 11】DataFrame (三)
下一篇
菜雞學習 pandas 的 30 日讀書分享【Day 13】DataFrame (五)
系列文
菜雞學習 pandas 的 30 日讀書分享30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言