熱線電話:13121318867

登錄
首頁大數據時代數據分析師教程《Python數據分析極簡入門》第2節 9 Pandas 文本數據
數據分析師教程《Python數據分析極簡入門》第2節 9 Pandas 文本數據
2024-11-29
收藏

《Python數據分析極簡入門》

第3節 9 Pandas 文本數據

import pandas as pd

1、cat() 拼接字符串

d = pd.DataFrame(['a''b''c'],columns = ['A'])
d
A
0 a
1 b
2 c

將某列元素拼接一列特定字符串

d['A'].str.cat(['A''B''C'], sep=',')
0    a,A
1    b,B
2    c,C
Name: A, dtype: object

將某列的元素合并為一個字符串

d['A'].str.cat(sep=',')
'a,b,c'

2、split() 切分字符串

import numpy as np
import pandas as pd
d = pd.DataFrame(['a_b_c''c_d_e', np.nan, 'f_g_h'],columns = ['A'])
d
A
0 a_b_c
1 c_d_e
2 NaN
3 f_g_h

將某列的字符串元素進行切分

d['A'].str.split('_')
0    [a, b, c]
1    [c, d, e]
2          NaN
3    [f, g, h]
Name: A, dtype: object

3、get() 獲取指定位置的字符串

d = pd.DataFrame(['a_b_c''c_d_e', np.nan, 'f_g_h'],columns = ['A'])
d['A']
0    a_b_c
1    c_d_e
2      NaN
3    f_g_h
Name: A, dtype: object
d['A'].str.get(2)
0      b
1      d
2    NaN
3      g
Name: A, dtype: object

4、join() 對每個字符都用給定的字符串拼接起來(不常用)

d = pd.DataFrame(['a_b_c''c_d_e', np.nan, 'f_g_h'],columns = ['A'])
d['A']
0    a_b_c
1    c_d_e
2      NaN
3    f_g_h
Name: A, dtype: object
d['A'].str.join("!")
0    a!_!b!_!c
1    c!_!d!_!e
2          NaN
3    f!_!g!_!h
Name: A, dtype: object

5、contains() 是否包含表達式 (很常用)

d['A'].str.contains('d')
0    False
1     True
2      NaN
3    False
Name: A, dtype: object
d.fillna('0')[d.fillna('0')['A'].str.contains('d')]
A
1 c_d_e
d.fillna('0')[d['A'].fillna('0').str.contains('d|e')]

#表示或的關系用"A|B",表示且用'A.*B|B.*A'
A
1 c_d_e

6、replace() 替換

d['A'].str.replace("_"".")
0    a.b.c
1    c.d.e
2      NaN
3    f.g.h
Name: A, dtype: object

7、repeat() 重復

d['A'].str.repeat(3)
0    a_b_ca_b_ca_b_c
1    c_d_ec_d_ec_d_e
2                NaN
3    f_g_hf_g_hf_g_h
Name: A, dtype: object

8、pad() 左右補齊

d['A'].str.pad(10, fillchar="0")
0    00000a_b_c
1    00000c_d_e
2           NaN
3    00000f_g_h
Name: A, dtype: object
d['A'].str.pad(10, side="right", fillchar="?")
0    a_b_c?????
1    c_d_e?????
2           NaN
3    f_g_h?????
Name: A, dtype: object

9、center() 中間補齊

d['A'].str.center(10, fillchar="?")
0    ??a_b_c???
1    ??c_d_e???
2           NaN
3    ??f_g_h???
Name: A, dtype: object

10、ljust() 右邊補齊

d['A'].str.ljust(10, fillchar="?")
0    a_b_c?????
1    c_d_e?????
2           NaN
3    f_g_h?????
Name: A, dtype: object

11、rjust() 左邊補齊

d['A'].str.rjust(10, fillchar="?")
0    ?????a_b_c
1    ?????c_d_e
2           NaN
3    ?????f_g_h
Name: A, dtype: object

12、zfill() 左邊補0

d['A'].str.zfill(10)
0    00000a_b_c
1    00000c_d_e
2           NaN
3    00000f_g_h
Name: A, dtype: object

13、wrap() 在指定的位置加回車符號

d['A'].str.wrap(3)
0    a_bn_c
1    c_dn_e
2        NaN
3    f_gn_h
Name: A, dtype: object

14、slice() 按給定點的開始結束位置切割字符串

d['A'].str.slice(1,3)
0     _b
1     _d
2    NaN
3     _g
Name: A, dtype: object

15、slice_replace() 使用給定的字符串,替換指定的位置的字符

d['A'].str.slice_replace(13"?")
0    a?_c
1    c?_e
2     NaN
3    f?_h
Name: A, dtype: object

16、count() 計算給定單詞出現的次數

d['A'].str.count("b")
0    1.0
1    0.0
2    NaN
3    0.0
Name: A, dtype: float64

17、startswith() 判斷是否以給定的字符串開頭

d['A'].str.startswith("a")
0     True
1    False
2      NaN
3    False
Name: A, dtype: object

18、endswith() 判斷是否以給定的字符串結束

d['A'].str.endswith("e")
0    False
1     True
2      NaN
3    False
Name: A, dtype: object

19、findall() 查找所有符合正則表達式的字符,以數組形式返回

d['A'].str.findall("[a-z]")
0    [a, b, c]
1    [c, d, e]
2          NaN
3    [f, g, h]
Name: A, dtype: object

20、match() 檢測是否全部匹配給點的字符串或者表達式

d['A'].str.match("[d-z]")
0    False
1    False
2      NaN
3     True
Name: A, dtype: object

21、extract() 抽取匹配的字符串出來,注意要加上括號,把你需要抽取的東西標注上

d['A'].str.extract("([d-z])")
0
0 NaN
1 d
2 NaN
3 f

22、len() 計算字符串的長度

d['A'].str.len()
0    5.0
1    5.0
2    NaN
3    5.0
Name: A, dtype: float64

23、strip() 去除前后的空白字符

df = pd.DataFrame(['a_b  ''  d_e  ', np.nan, 'f_g  '],columns = ['B'])
df['B']
0      a_b  
1      d_e  
2        NaN
3      f_g  
Name: B, dtype: object
df['B'].str.strip()
0    a_b
1    d_e
2    NaN
3    f_g
Name: B, dtype: object

24、rstrip() 去除后面的空白字符

df['B'].str.rstrip()
0      a_b
1      d_e
2      NaN
3      f_g
Name: B, dtype: object

25、lstrip() 去除前面的空白字符

df['B'].str.lstrip()
0    a_b  
1    d_e  
2      NaN
3    f_g  
Name: B, dtype: object

26、partition() 把字符串數組切割稱為DataFrame,注意切割只是切割稱為三部分,分隔符前,分隔符,分隔符后

d['A'] .str.partition('_')
0 1 2
0 a _ b_c
1 c _ d_e
2 NaN NaN NaN
3 f _ g_h

27、rpartition() 從右切起

d['A'].str.rpartition('_')
0 1 2
0 a_b _ c
1 c_d _ e
2 NaN NaN NaN
3 f_g _ h

28、lower() 全部小寫

d['A'].str.lower() 
0    a_b_c
1    c_d_e
2      NaN
3    f_g_h
Name: A, dtype: object

29、upper() 全部大寫

d['A'].str.upper() 
0    A_B_C
1    C_D_E
2      NaN
3    F_G_H
Name: A, dtype: object

30、find() 從左邊開始,查找給定字符串的所在位置

d['A'].str.find('d')
0   -1.0
1    2.0
2    NaN
3   -1.0
Name: A, dtype: float64

31、rfind() 從右邊開始,查找給定字符串的所在位置

d['A'].str.rfind('d')
0   -1.0
1    2.0
2    NaN
3   -1.0
Name: A, dtype: float64

32、index() 查找給定字符串的位置,注意,如果不存在這個字符串,那么會報錯!

d['A'].str.index('_')
0    1.0
1    1.0
2    NaN
3    1.0
Name: A, dtype: float64

33、rindex() 從右邊開始查找,給定字符串的位置

d['A'].str.rindex('_')
0    3.0
1    3.0
2    NaN
3    3.0
Name: A, dtype: float64

34、capitalize() 首字符大寫

d['A'].str.capitalize()
0    A_b_c
1    C_d_e
2      NaN
3    F_g_h
Name: A, dtype: object

35、swapcase() 大小寫互換

d['A'].str.capitalize()
0    A_b_c
1    C_d_e
2      NaN
3    F_g_h
Name: A, dtype: object

36、isalnum() 是否全部是數字和字母組成

d['A'].str.isalnum()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

37、isalpha() 是否全部是字母

d['A'].str.isalpha()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

38、isdigit() 是否全部都是數字

d['A'].str.isdigit()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

39、isspace() 是否空格

d['A'].str.isspace()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

40、islower() 是否全部小寫

d['A'].str.islower()
0    True
1    True
2     NaN
3    True
Name: A, dtype: object

41、isupper() 是否全部大寫

d['A'].str.isupper()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

42、istitle() 是否只有首字母為大寫,其他字母為小寫

d['A'].str.istitle()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

43、isnumeric() 是否是數字

d['A'].str.isnumeric()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

44、isdecimal() 是否全是數字

d['A'].str.isdecimal()
0    False
1    False
2      NaN
3    False
Name: A, dtype: object

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢