處理文字資料,主要是通過seris的str訪問。遇到nan時不做任何處理,保留結果為nan,遇到數字全部處理為nan。
str是seris的方法,dataframe不能直接使用,但是通過索引選擇dataframe中的某一行或者某一列,結果為seris,然後就可以使用了。
例如定義乙個seris和dataframe如下
s = pd.series(['ab',1,'
bb ',np.nan,'
bc '
])dic =
df = pd.dataframe(dic,index=['
d','
e','
f','
g'])
將上述s全部變成大寫字母,將df的列名稱變成大寫。
s =s.str.upper()df.columns = df.columns.str.upper()
以下都以seris做示例,這些方法與python字串的操作類似
print(s.str.lower()) #將s中的各字串全部變為小寫
print(s.str.upper()) #
將s中的各字串全部變為大寫
print(s.str.capitalize()) #
將s中的各字串全部變為首字母大寫
print(s.str.len()) #
求s中各字串的長度
print(s.str.count('
b')) #
求s中的各字串元素包含幾個b
print(s.str.startswith('
a')) #
判斷s中的各字串是否以a開始
print(s.str.endswith('
a')) #
判斷s中的各字串是否以a結束
print(s.str.contains('
b')) #
判斷s中的各字串是否包含b
print(s.str.strip()) #
去掉s中字串元素兩邊的空格
print(s.str.lstrip()) #
去掉s中字串元素左邊的空格
print(s.str.rstrip()) #
去掉s中字串元素右邊的空格
print(s.str.replace('
原字元','
替換字元
',1)) #
將原字串替換為指定字串,預設替換所有滿足條件的,n表示替換前n個滿足條件的
split()和rsplit()
split()表示從左邊開始分割,rsplit()表示從右邊分割,分割後的結構為乙個列表
s = pd.series(['a,b,c,d
',np.nan,['
a..c
'],'
1,2,3'])
print(s.str.split('
,')) #
對seris中的元素按照,分割,即對'a,b,c'、np.nan、['a..c']、'1,2,3'按照,分割
print(s.str.split('
,').str[0]) #
獲取每個元素分割後的第乙個值,分割後的結果也為seris,也需要通過str來獲取每個元素
print(s.str.split('
,',expand=true,n=1)) #
expand為true表示將原列按照分割符拆分為㢵列,n表示拆分次數,預設不拆分,如果拆分預設拆分最多次
#0 [a, b, c, d]
#1 nan
#2 nan
#3 [1, 2, 3]
#dtype: object
#0 a
#1 nan
#2 nan
#3 1
#dtype: object
#0 1
#0 a b,c,d
#1 nan nan
#2 nan nan
#3 1 2,3
Python文字資料分析與處理
分詞 過濾停用詞 tf idf得到摘要資訊或者使用lda主題模型 與其他的鐵達尼號遇難 等案例不同,文字處理需要自己在預處理時構建出資料表.沒有後者每乙個提供表 不使用第三方庫實現的思路 過濾停用詞得到去掉停用詞的集合data 對data進行去重 現在使用的演算法不需要單詞出現的數量,如果換作其他演...
Python文字資料分析與處理
分詞 過濾停用詞 tf idf得到摘要資訊或者使用lda主題模型 與其他的鐵達尼號遇難 等案例不同,文字處理需要自己在預處理時構建出資料表.沒有後者每乙個提供表 不使用第三方庫實現的思路 過濾停用詞得到去掉停用詞的集合data 對data進行去重 現在使用的演算法不需要單詞出現的數量,如果換作其他演...
文字資料處理彙總
1.匹配中文 曾經看到說 w 可以,但親測無效。轉向編碼的形式 u4e00 u9fa5 也不行,只能是 u4e00 u9fcc 2.不匹配某個字串 中間不包含str1 pattern str2 開頭不包含 pattern str 結尾不包含str1.嗎 或者str1 嗎 3.零寬斷言 1.正向肯定預...