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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pandas 将某一列转换为字符类型_6个冷门但实用的pandas知识点

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas 将某一列转换为字符类型_6个冷门但实用的pandas知识点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 簡介

  pandas作為開展數據分析的利器,蘊含了與數據處理相關的豐富多樣的API,使得我們可以靈活方便地對數據進行各種加工,但很多pandas中的實用方法其實大部分人都是不知道的,今天就來給大家介紹6個不太為人們所所熟知的實用pandas小技巧。

2 6個實用的pandas小知識#

2.1 Series與DataFrame的互轉#

  很多時候我們計算過程中產生的結果是Series格式的,而接下來的很多操作尤其是使用鏈式語法時,需要銜接著傳入DataFrame格式的變量,這種時候我們就可以使用到pandas中Series向DataFrame轉換的方法:

  • 利用to_frame()實現Series轉DataFrame
Copys = pd.Series([0, 1, 2])# Series轉為DataFrame,name參數用于指定轉換后的字段名s = s.to_frame(name='列名')s

  順便介紹一下單列數據組成的數據框轉為Series的方法:

  • 利用squeeze()實現單列數據DataFrame轉Series
Copy# 只有單列數據的DataFrame轉為Seriess.squeeze()

2.2 隨機打亂DataFrame的記錄行順序#

  有時候我們需要對數據框整體的行順序進行打亂,譬如在訓練機器學習模型時,打亂原始數據順序后取前若干行作為訓練集后若干行作為測試集,這在pandas中可以利用sample()方法快捷實現。

  sample()方法的本質功能是從原始數據中抽樣行記錄,默認為不放回抽樣,其參數frac用于控制抽樣比例,我們將其設置為1則等價于打亂順序:

Copydf = pd.DataFrame({ 'V1': range(5), 'V2': range(5)})df.sample(frac=1)

2.3 利用類別型數據減少內存消耗#

  當我們的數據框中某些列是由少數幾種值大量重復形成時,會消耗大量的內存,就像下面的例子一樣:

Copyimport numpy as nppool = ['A', 'B', 'C', 'D']# V1列由ABCD大量重復形成df = pd.DataFrame({ 'V1': np.random.choice(pool, 1000000)})# 查看內存使用情況df.memory_usage(deep=True)

  這種時候我們可以使用到pandas數據類型中的類別型來極大程度上減小內存消耗:

Copydf['V1'] = df['V1'].astype('category')df.memory_usage(deep=True)

  可以看到,轉換類型之后內存消耗減少了將近98.3%!

2.4 pandas中的object類型陷阱#

  在日常使用pandas處理數據的過程中,經常會遇到object這種數據類型,很多初學者都會把它視為字符串,事實上object在pandas中可以代表不確定的數據類型,即類型為object的Series中可以混雜著多種數據類型:

Copys = pd.Series(['111100', '111100', 111100, '111100'])s

  查看類型分布:

Copys.apply(lambda s: type(s))

  這種情況下,如果貿然當作字符串列來處理,對應的無法處理的元素只會變成缺失值而不報錯,給我們的分析過程帶來隱患:

Copys.str.replace('00', '11')

  這種時候就一定要先轉成對應的類型,再執行相應的方法:

Copys.astype('str').str.replace('00', '11')

2.5 快速判斷每一列是否有缺失值#

  在pandas中我們可以對單個Series查看hanans屬性來了解其是否包含缺失值,而結合apply(),我們就可以快速查看整個數據框中哪些列含有缺失值:

Copydf = pd.DataFrame({ 'V1': [1, 2, None, 4], 'V2': [1, 2, 3, 4], 'V3': [None, 1, 2, 3]})df.apply(lambda s: s.hasnans)

2.6 使用rank()計算排名時的五種策略#

  在pandas中我們可以利用rank()方法計算某一列數據對應的排名信息,但在rank()中有參數method來控制具體的結果計算策略,有以下5種策略,在具體使用的時候要根據需要靈活選擇:

  • average

  在average策略下,相同數值的元素的排名是其內部排名的均值:

Copys = pd.Series([1, 2, 2, 2, 3, 4, 4, 5, 6])s.rank(method='average')
  • min

  在min策略下,相同元素的排名為其內部排名的最小值:

Copys.rank(method='min')
  • max

  max策略與min正好相反,取的是相同元素內部排名的最大值:

Copys.rank(method='max')
  • dense

  在dense策略下,相當于對序列去重后進行排名,再將每個元素的排名賦給相同的每個元素,這種方式也是比較貼合實際需求的:

Copys.rank(method='dense')
  • first

  在first策略下,當多個元素相同時,會根據這些相同元素在實際Series中的順序分配排名:

Copys = pd.Series([2, 2, 2, 1, 3])s.rank(method='first')

關注我,私信回復【資料】即可領取視頻中java相關資料以及一份227頁最新的bat大廠面試寶典

最后

歡迎大家一起交流,喜歡文章記得關注我點個贊喲,感謝支持!

總結

以上是生活随笔為你收集整理的pandas 将某一列转换为字符类型_6个冷门但实用的pandas知识点的全部內容,希望文章能夠幫你解決所遇到的問題。

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