新聞中心
本文的目的是幫助您開(kāi)始在 python 中繪制數(shù)據(jù)。 我們將創(chuàng)建一個(gè)條形圖來(lái)繪制給定文本文件中字符的頻率。 在這種情況下,文本文件包含了《了不起的蓋茨比》的內(nèi)容。

創(chuàng)新互聯(lián)建站主營(yíng)長(zhǎng)安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā),長(zhǎng)安h5小程序定制開(kāi)發(fā)搭建,長(zhǎng)安網(wǎng)站營(yíng)銷推廣歡迎長(zhǎng)安等地區(qū)企業(yè)咨詢
第 1 步:創(chuàng)建您的虛擬環(huán)境
這個(gè)項(xiàng)目的環(huán)境會(huì)比較小。 虛擬環(huán)境允許您向工作區(qū)添加額外的功能,而不會(huì)影響計(jì)算機(jī)的其余部分!
創(chuàng)建一個(gè)目錄并在代碼編輯器和終端(運(yùn)行命令的地方)中打開(kāi)它。
讓我們運(yùn)行:
$ python3 -m venv venv
$ source venv/bin/activate
我們可以安裝我們必要的依賴項(xiàng)
$ pip3 install matplotlib
我們還要?jiǎng)?chuàng)建兩個(gè)文件,read.txt 和 wordcount.py。
我們將使用 wordcount.py 來(lái)分析 read.txt 中的文本。
第 2 步:閱讀文本
我們可以比較簡(jiǎn)單的開(kāi)始,
import matplotlib.pyplot as plt # plot
from collections import OrderedDict # this will be used for sorting later
file = open('read.txt')
text = file.read()
file.close()
- 首先,它導(dǎo)入我們的繪圖和排序庫(kù)
- 其次,我們使用內(nèi)置的 open 函數(shù),它允許我們打開(kāi)一個(gè)文件進(jìn)行讀寫(xiě)
- 然后我們讀取文件里面的文本并將其存儲(chǔ)到文本變量中
- 最后,我們關(guān)閉文件,因?yàn)槲覀儾辉偈褂盟?/li>
這就是我們“讀取”文件并將內(nèi)容存儲(chǔ)在變量中所需的全部?jī)?nèi)容。
第 3 步:分析字符
我們可以跟蹤字符的最好方法是使用 python 字典(在其他編程語(yǔ)言中稱為 hashmap)。
字典是一種非常有用的數(shù)據(jù)存儲(chǔ)方式。 就像真正的字典一樣,它會(huì)有一個(gè)“單詞”列表,您可以查看單詞以查看定義。
在編程中,這個(gè)概念被推廣到“鍵/值”對(duì)。 這意味著我們可以設(shè)置字典,當(dāng)我向字典詢問(wèn)“a”時(shí),它將返回“a”出現(xiàn)的總次數(shù)。
所以讓我們編碼吧!
charDict = {} # dictionaries are defined by curly braces
def count_letter(character):
character = character.lower()
if character.isspace():
return
if character in charDict:
charDict[character] = charDict[character] + 1
else:
charDict[character] = 1
# loop through text
for i in text:
count_letter(i)
charDict = OrderedDict(sorted(charDict.items()))讓我們回顧一下這里發(fā)生了什么。
- 首先我們定義一個(gè)空字典
- 接下來(lái)我們使用 def 關(guān)鍵字定義一個(gè)函數(shù)。 這個(gè)函數(shù)接受一個(gè)變量“字符”,檢查它是否是一個(gè)空格(空格、制表符、換行符)。 您可以為您的選擇添加其他標(biāo)準(zhǔn),例如 isalpha() 以確定字符是否為字母
- 然后檢查它是否已經(jīng)在字典中。 如果它在字典中,它會(huì)將值更改為之前的值加 1(因?yàn)槲覀冋谟?jì)算這個(gè)字符),否則它將在字典中添加一個(gè)初始計(jì)數(shù)為 1 的新條目
- 然后我們遍歷文本變量中的每個(gè)字符,其中“i”代表一個(gè)單獨(dú)的字符,我們保存并運(yùn)行我們的函數(shù)來(lái)計(jì)算它們
- 最后,我們使用 OrderdedDict 導(dǎo)入按字母順序?qū)ψ值溥M(jìn)行排序
第4步:畫(huà)出來(lái)!
現(xiàn)在我們的數(shù)據(jù)集已創(chuàng)建,讓我們將其組織成軸并繪制它!
我們將創(chuàng)建一個(gè)列表來(lái)表示每個(gè)軸
num_list = []
char_list = []
這些列表將相互對(duì)應(yīng),因此如果 char_list 中的第 1 項(xiàng)是“a”,則 num_list 中的第 1 項(xiàng)將是相應(yīng)的頻率。 讓我們也把它編碼出來(lái)。
char_list = [] # character
num_list = [] # frequency
# create x and y axes
for x,y in charDict.items():
char_list.append(x)
num_list.append(y)
我們使用兩個(gè)變量循環(huán)遍歷我們創(chuàng)建的字典中的鍵/值對(duì),然后將它們添加到我們的數(shù)據(jù)列表中。
最后讓我們使用 matplotlib 創(chuàng)建并保存這個(gè)條形圖。
fig = plt.figure() # create a new figure
ax = fig.add_subplot() # create a new bar graph within the figure
fig.canvas.manager.set_window_title('The Great Gatsby') # title of window
ax.bar(char_list, num_list) # add the data to the graph
plt.savefig('chars.png') # download an image of the bar graph
plt.show() # show the image
- 首先,我們創(chuàng)建一個(gè)新圖形。 圖為整體窗口
- 向圖中添加繪圖
- 使用我們選擇的數(shù)據(jù)添加條形圖
- 下載圖片
- 顯示圖像?
是時(shí)候測(cè)試它了!
使用下面的代碼運(yùn)行您的文件,為我們的結(jié)果做好準(zhǔn)備!
$ python3 wordcount.py
所以要回答我在文章開(kāi)頭提出的問(wèn)題,字母 e 在《了不起的蓋茨比》中被使用了超過(guò) 25,000 次! 哇!
結(jié)論
在本文結(jié)束時(shí),我希望您對(duì) matplotlib 和數(shù)據(jù)科學(xué)有所了解。
當(dāng)前文章:使用Python和Matplotlib在文本中繪制字符
當(dāng)前URL:http://m.5511xx.com/article/dhhecod.html


咨詢
建站咨詢
