Python 文字的特徵提取與描述統計

2021-10-07 05:38:13 字數 2856 閱讀 6002

基於公布的新冠病毒確診患者病例,進行文字特徵提取與描述統計分析。

資料形式:

import numpy as np

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

f = open(r'----你的路徑----\新發地.txt', encoding='utf-8')

data =

for line in f.readlines():

# line = line.split(',') # 基於逗號將文字處理成list

cid = line.split(',')[0].replace('病例', '') # 獲取病歷號

gender = line.split(',')[1].replace('某', '') # 用空格代替「某」這個字

# 資料存在不規範,年齡並非都在第四位,不能用位置索引獲得年齡,但年齡後面都跟著「歲」

age = line.split('歲,')[0].split(',')[-1] # 年齡在最後一位

# 獲得該患者的地區,位址只保留到省級單位,取字串的前兩位

reg = line.split('人,')[0].split(',')[-1][0:2]

# 提取患者的臨床分型

c_type = line.split('臨床分型為')[1].replace('。', '').replace('\n', '')

data = pd.dataframe(data)

data.columns = ['cid', 'gender', 'age', 'reg', 'c_type']

# 以下三行**是解決pandas輸出時, 表頭不能對齊的方法

pd.set_option('display.unicode.ambiguous_as_wide', true)

pd.set_option('display.unicode.east_asian_width', true)

pd.set_option('display.width', 180) # 設定列印的寬度

# print(data)

# 將患者根據年齡分組

data.age = pd.to_numeric(data.age)

data.age = np.floor(data.age/10)*10

print(data)

df = data.groupby('age') # 按性別分組

freq = df.size()

print(df.size()) # 統計資料

# 根據年齡組畫圖

sns.barplot(freq.index, list(freq))

plt.show()

文字特徵提取結果(部分輸出):

年齡分組統計結果:

繪圖:

提取病毒潛伏期:

import numpy as np

import pandas as pd

from matplotlib import pyplot as plt

f = open(r'-----你的路徑------\新發地2.txt', encoding='utf-8')

data = # 存放潛伏期

# 提取日期

for line in f.readlines():

txt = line

txt = txt.replace(',', ',') # 中文的逗號改為英文的逗號

txt = txt.replace('、', ',') # 中文的頓號改為英文的逗號

txt = txt.replace('。', ',') # 中文的頓號改為英文的逗號

txt = txt.split(',') # 應英文逗號將文字分割開

txt = [each for each in txt if '日' in each] # 將含有'日'關鍵字的留下來

txt = [each.split('日')[0] for each in txt] # 將資料按照'日'進行分割

# 按'日'分割會有一些資料不規範,在資料量少的時候可手動處理

# 以下四行為資料處理

txt = [each.replace('患者', '') for each in txt] # 處理掉患者關鍵字

txt = [each.split('月')[-1] for each in txt]

txt = [each.replace('自述', '') for each in txt]

txt = [each.replace('為', '') for each in txt]

# 通過日期差值判斷期間

time = 0

if len(txt) >= 2:

txt = pd.to_numeric(txt)

time = np.max(txt)-np.min(txt)

plt.hist(data) # 直方圖

plt.show()

輸出結果:

希望疫情早些過去,大家健健康康!

文字特徵提取

注 翻譯自 scikit learn 的 user guide 中關於文字特徵提取部分。文字分析是機器學習的一大應用領域,但是長度不一的字串行是無法直接作為演算法的輸入。為了解決這個問題,scikit learn 提供了幾個常用的文字特徵提取的方法 在這個框架下,特徵和樣本定義為 如此,乙個預料庫可...

文字特徵 特徵提取(一)

本文的內容主要來自於quora上的乙個問題,這裡簡單的做一下總結,感興趣的可檢視原帖 為了使用機器學習方法處理文字資料,需要找到適合的文字表示形式,對於傳統機器學習方法而言,常用的一種表示方法是將文件轉換為文件 詞項矩陣 document term matrix 具體就是將多篇文件轉換為資料幀 da...

特徵選擇與特徵提取

一 特徵選擇和特徵提取 特徵選擇 feature selection 和特徵提取 feature extraction 都屬於降維 dimension reduction 這兩者達到的效果是一樣的,就是試圖去減少特徵資料集中的屬性 或者稱為特徵 的數目 但是兩者所採用的方式方法卻不同。特徵提取的方法...