欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

讓你一文弄懂Pandas文本數(shù)據(jù)處理

 更新時間:2021年08月11日 10:02:53   作者:可以叫我才哥  
文本數(shù)據(jù)具有數(shù)據(jù)維度高、數(shù)據(jù)量大且語義復雜等特點,是一種較為復雜的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關于Pandas文本數(shù)據(jù)處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

日常工作中我們經常接觸到一些文本類信息,需要從文本中解析出數(shù)據(jù)信息,然后再進行數(shù)據(jù)分析操作。

而對文本類信息進行解析是一件比較頭禿的事情,好巧,Pandas剛好對這類文本數(shù)據(jù)有比較好的處理方法,那就讓我們來一起學一學吧!

1. 文本數(shù)據(jù)類型

在pandas中存儲文本數(shù)據(jù)有兩種方式:object 和 string。在pandas 1.0版本之前,object是唯一的文本類型,在一列數(shù)據(jù)中如果包含數(shù)值和文本等混合類型則一般也會默認為object。在pandas 1.0 版本之后,新增了string文本類型,可以更好的支持字符串的處理。

1.1. 類型簡介

默認情況下,object仍然是文本數(shù)據(jù)默認的類型。

如果要采用string類型,我們可以通過dtype進行指定

在Series 或 Dataframe被創(chuàng)建后,我們還可以通過astype進行類型強制轉換

當然,我們還有個df.convert_dtypes()方法可以進行智能數(shù)據(jù)類型選擇

1.2. 類型差異

string和object在操作上有所不同。

對于sting來說,返回數(shù)字輸出的字符串訪問器方法將始終返回可為空的整數(shù)類型;對于object來說,是 int 或 float,具體取決于 NA 值的存在

對于string類型來說,返回布爾輸出的方法將返回一個可為空的布爾數(shù)據(jù)類型

2. 字符串方法

Series 和 Index 都有一些字符串處理方法,可以方便進行操作,最重要的是,這些方法會自動排除缺失/NA 值,我們可以通過str屬性訪問這些方法。

2.1. 文本格式

文本格式是對字符串文本進行格式操作,比如轉換大小寫之類的

>>> s = pd.Series(
...     ["A", "B", "Aaba", "Baca", np.nan, "cat"],
...     dtype="string"
... )
>>> s.str.lower() # 轉小寫
0       a
1       b
2    aaba
3    baca
4    <NA>
5     cat
dtype: string
>>> s.str.upper() # 轉大寫
0       A
1       B
2    AABA
3    BACA
4    <NA>
5     CAT
dtype: string
>>> s.str.title() # 每個單詞大寫
0       A
1       B
2    Aaba
3    Baca
4    <NA>
5     Cat
dtype: string
>>> s.str.capitalize() # 首字母大寫
0       A
1       B
2    Aaba
3    Baca
4    <NA>
5     Cat
dtype: string
>>> s.str.swapcase() # 大小寫互換
0       a
1       b
2    aABA
3    bACA
4    <NA>
5     CAT
dtype: string
>>> s.str.casefold() # 轉為小寫,支持其他語言
0       a
1       b
2    aaba
3    baca
4    <NA>
5     cat
dtype: string

2.2. 文本對齊

文本對齊是指在文本顯示的時候按照一定的規(guī)則進行對齊處理,比如左對齊、右對齊、居中等等

>>> s.str.center(10,fillchar='-') # 居中對齊,寬度為10,填充字符為'-'
0    ----A-----
1    ----B-----
2    ---Aaba---
3    ---Baca---
4          <NA>
5    ---cat----
dtype: string
>>> s.str.ljust(10,fillchar='-') # 左對齊
0    A---------
1    B---------
2    Aaba------
3    Baca------
4          <NA>
5    cat-------
dtype: string
>>> s.str.rjust(10,fillchar='-') # 右對齊
0    ---------A
1    ---------B
2    ------Aaba
3    ------Baca
4          <NA>
5    -------cat
dtype: string
>>> s.str.pad(width=10, side='left', fillchar='-') # 指定寬度,填充字符對齊方式為 left,填充字符為'-'
0    ---------A
1    ---------B
2    ------Aaba
3    ------Baca
4          <NA>
5    -------cat
dtype: string
>>> s.str.zfill(3) # 指定寬度3,不足則在前面添加0
0     00A
1     00B
2    Aaba
3    Baca
4    <NA>
5     cat
dtype: string

2.3. 計數(shù)與編碼

文本計數(shù)與內容編碼

>>> s.str.count("a") # 字符串中指定字母的數(shù)量
0       0
1       0
2       2
3       2
4    <NA>
5       1
dtype: Int64
>>> s.str.len() # 字符串的長度
0       1
1       1
2       4
3       4
4    <NA>
5       3
dtype: Int64
>>> s.str.encode('utf-8') # 編碼
0       b'A'
1       b'B'
2    b'Aaba'
3    b'Baca'
4       <NA>
5     b'cat'
dtype: object
>>> s.str.encode('utf-8').str.decode('utf-8') # 解碼
0       A
1       B
2    Aaba
3    Baca
4    <NA>
5     cat
dtype: object    

2.4. 格式判斷

格式判斷就是對字符串進行字符格式判斷,比如是不是數(shù)字,是不是字母,是不是小數(shù)等等

>>> s = pd.Series(
...     ["A", "B", "Aaba", 12, 5, np.nan, "cat"],
...     dtype="string"
... )
>>> s.str.isalpha() # 是否為字母
0     True
1     True
2     True
3    False
4    False
5     <NA>
6     True
dtype: boolean
>>> s.str.isnumeric() # 是否為數(shù)字0-9
0    False
1    False
2    False
3     True
4     True
5     <NA>
6    False
dtype: boolean
>>> s.str.isalnum() # 是否由數(shù)字或字母組成
0    True
1    True
2    True
3    True
4    True
5    <NA>
6    True
dtype: boolean
>>> s.str.isdigit() # 是否為數(shù)字
0    False
1    False
2    False
3     True
4     True
5     <NA>
6    False
dtype: boolean
>>> s.str.isdecimal() # 是否為小數(shù)
0    False
1    False
2    False
3     True
4     True
5     <NA>
6    False
dtype: boolean
>>> s.str.isspace() # 是否為空格
0    False
1    False
2    False
3    False
4    False
5     <NA>
6    False
dtype: boolean
>>> s.str.islower() # 是否為小寫
0    False
1    False
2    False
3    False
4    False
5     <NA>
6     True
dtype: boolean
>>> s.str.isupper() # 是否為大寫
0     True
1     True
2    False
3    False
4    False
5     <NA>
6    False
dtype: boolean
>>> s.str.istitle() # 是否為標題格式
0     True
1     True
2     True
3    False
4    False
5     <NA>
6    False
dtype: boolean

以上這些字符串的方法其實和python原生的字符串方法基本相同。

3. 文本高級操作

文本高級操作包含文本拆分、文本替換、文本拼接、文本匹配與文本提取等,學會這些操作技巧,我們基本上就可以完成常見的復雜文本信息處理與分析了。

3.1. 文本拆分

文本拆分類似excel里的數(shù)據(jù)分列操作,將文本內容按照指定的字符進行分隔,具體大家可以看下面案例。

方法split()返回的是一個列表

我們可以使用get 或 []符號訪問拆分列表中的元素

我們還可以將拆分后的列表展開,需要使用參數(shù)expand

同樣,我們可以限制分隔的次數(shù),默認是從左開始(rsplit是從右到左),用到參數(shù)n

對于更復雜的拆分規(guī)格,我們可以在分隔符處傳入正則表達式

補充:像str.slice()切片選擇方法與str.partition()文本劃分方法都有類似效果,大家可以自定查閱官方文檔案例了解。

3.2. 文本替換

我們經常在數(shù)據(jù)處理中用到替換功能,將指定的一些數(shù)據(jù)替換成我們想要替換的內容。同樣,在處理文本數(shù)據(jù)替換的時候,str.repalce()也可以很好的滿足這一操作。

以上案例中,將regex參數(shù)設置為False就可以進行字面替換而不是對每個字符進行轉義;反之,則需要轉義,為正則替換。

此外,我們還可以正則表達式替換,比如下面這個例子中我們實現(xiàn)的是對文本數(shù)據(jù)中英文部分進行倒序替換:

可能部分同學無法直觀的理解上面的正則案例,這里簡單的拆解介紹下:

關于正則表達式的一些介紹,大家還可以參考此前推文《》進行更多了解。

另外,我們還可以通過str.slice_replace()方法實現(xiàn)保留選定內容,替換剩余內容的操作:

補充:我們還可通過str.repeat()方法讓原有的文本內容重復,具體大家可以自行體驗

3.3. 文本拼接

文本拼接是指將多個文本連接在一起,基于str.cat()方法

比如,將一個序列的內容進行拼接,默認情況下會忽略缺失值,我們亦可指定缺失值

連接一個序列和另一個等長的列表,默認情況下如果有缺失值,則會導致結果中也有缺失值,不過可以通過指定缺失值na_rep的情況進行處理

連接一個序列和另一個等長的數(shù)組(索引一致)

索引對齊

在索引對齊中,我們還可以通過參數(shù)join來指定對齊形式,默認為左對齊left,還有outer, inner, right

3.4. 文本匹配

文本匹配這里我們介紹查詢和包含判斷,分別用到str.findall()、str.find()str.contains()方法。

文本查詢,str.findall()返回查詢到的值,str.find()返回匹配到的結果所在的位置(-1表示不存在)

文本包含,其實str.contain()常見于數(shù)據(jù)篩選中

此外,還有str.startwith()str.endwith()用于指定開頭還是結尾包含某字符的情況,而str.match()則可用于正則表達式匹配。

3.5. 文本提取

我們在日常中經常遇到需要提取某序列文本中特定的字符串,這個時候采用str.extract()方法就可以很好的進行處理,它是用正則表達式將文本中滿足要求的數(shù)據(jù)提取出來形成單獨的列。

比如下面這個案例,我們用正則表達式將文本分為兩部分,第一部分是字母a和b,第二部分匹配數(shù)字:

在上述案例中,expand參數(shù)為Fasle時如果返回結果是一列則為Series,否則是Dataframe。

我們還可以對提取的列進行命令,形式如?P<列名稱>,具體如下:

提取全部匹配項,會將一個文本中所有符合規(guī)則的內容匹配出來,最后形成一個多層索引數(shù)據(jù):

我們還可以從字符串列中提取虛擬變量,例如用"|"分隔(第一行abc只有a,第二行有a和b,第三行都沒有,第四行有a和c):

以上就是本次全部內容,相信大家在熟練這些文本數(shù)據(jù)處理的操作后,在日常工作中對于文本數(shù)據(jù)的處理將會非常得心應手。

總結

到此這篇關于Pandas文本數(shù)據(jù)處理的文章就介紹到這了,更多相關Pandas文本數(shù)據(jù)處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python?字符串使用多個分隔符分割成列表的2種方法

    Python?字符串使用多個分隔符分割成列表的2種方法

    本文主要介紹了Python?字符串使用多個分隔符分割成列表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Python中的字典與成員運算符初步探究

    Python中的字典與成員運算符初步探究

    這篇文章主要介紹了Python中的字典與成員運算符初步探究,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10
  • python 異或加密字符串的實例

    python 異或加密字符串的實例

    今天小編就為大家分享一篇python 異或加密字符串的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 基于PyQt5制作一個動態(tài)指針時鐘

    基于PyQt5制作一個動態(tài)指針時鐘

    這篇文章主要和大家分享如何利用Python中的PyQt5制作一個動態(tài)指針時鐘來顯示實時時間,文中的示例代碼講解詳細,需要的可以參考一下
    2022-02-02
  • Python 將 CSV 分割成多個文件的示例代碼

    Python 將 CSV 分割成多個文件的示例代碼

    在本文中,我們討論了如何使用 Pandas 庫創(chuàng)建 CSV 文件, 此外,我們還討論了兩種常見的數(shù)據(jù)拆分技術,行式數(shù)據(jù)拆分和列式數(shù)據(jù)拆分,需要的朋友可以參考下
    2023-06-06
  • Python實現(xiàn)匯率轉換操作

    Python實現(xiàn)匯率轉換操作

    這篇文章主要介紹了Python實現(xiàn)匯率轉換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 關于PyQt5中QtGui.QImage圖片顯示問題解析

    關于PyQt5中QtGui.QImage圖片顯示問題解析

    PyQt作為Qt語言的Python擴展,可以用來方便快速的開發(fā)界面應用,本文重點給大家介紹PyQt5中的QtGui.QImage圖片顯示問題分析,需要的朋友可以參考下
    2022-03-03
  • 解決webdriver.Chrome()報錯:Message:''chromedriver'' executable needs to be in Path

    解決webdriver.Chrome()報錯:Message:''chromedriver'' executable n

    這篇文章主要介紹了解決webdriver.Chrome()報錯:Message:'chromedriver' executable needs to be in Path ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python爬取百度春節(jié)祝福語并生成心形詞云

    Python爬取百度春節(jié)祝福語并生成心形詞云

    這篇文章主要介紹了利用Python爬蟲爬取百度的春節(jié)祝福語,并將其生成心形詞云,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01
  • Python爬蟲設置代理IP(圖文)

    Python爬蟲設置代理IP(圖文)

    在本篇內容里小編給大家分享了關于Python爬蟲設置代理IP的相關知識點和步驟,需要的朋友們參考下。
    2018-12-12

最新評論