來源:北大青鳥總部 2023年03月14日 14:51
在大數據時代,數據思維已開始深刻變革各行各業(yè),從我們的電商消費信息、運動軌跡、社交數據、產品使用習慣,到企業(yè)的調研、設計、產品、運營、營銷,再到交通、金融、生產制造、公共服務。而由于Python在數據獲取、數據處理、數據分析、數據挖掘、數據可視化、機器學習、人工智能等方面有著非常多成熟的庫以及活躍的社區(qū),構成數據科學領域最為完整且完善的生態(tài)。
尤其是在NLP(自然語言處理)項目中,用Python來處理數據也就變得更加廣泛了。下面將詳細地介紹五款必備的高效Python數據分析庫。這會對我們編寫高級復雜的程序幫助很大。但不用擔心,你不需要有任何技術基礎就可上手這些庫。
Numerizer是一個將自然語言中文本數字快速轉換為整數型(int)和浮點型(float)數字的Python模塊或庫。它是一個開源的GitHub項目(https://github.com/jaidevd/numerizer)。特別說明,為了方便演示該庫的使用。這里推薦使用Anaconda,它是一個開源的Python發(fā)行版本,其包含了conda、Python等180多個科學包及其依賴項,非常適合初學者。
1.Numerizer庫的安裝
打開Anaconda的終端,輸入如下語句進行Numerizer庫的安裝。
pipinstall numerizer
2.Numerizer庫實例演示
安裝完成后,我們可以運行Anaconda內置的spyder,并輸入以下語句
fromnumerizer import numerize
numerize('fortytwo')
numerize('forty-two')
numerize('fourhundred and sixty two')
numerize('onefifty')
numerize('twelvehundred')
numerize('twentyone thousand four hundred and seventy three')
numerize('onemillion two hundred and fifty thousand and seven')
numerize('onebillion and one')
numerize('nineand three quarters')
numerize('platformnine and three quarters')
程序運行結果如下圖所示,可以很清楚地發(fā)現(xiàn),英文文字數字被準備轉換成了相應的數字。
在現(xiàn)實世界的數據集中發(fā)現(xiàn)丟失值是很普遍的。每次處理數據時,缺失值是必須要考慮的問題。但是手工查看每個變量的缺失值是非常麻煩的一件事情。數據分析之前首先要保證數據集的質量。Missingo就是一個可視化丟失值的庫。它提供了一個靈活且易于使用的缺失數據可視化和實用程序的小工具集,使您可以快速直觀地總結數據集的完整性。(該庫的GitHub地址:https://github.com/ResidentMario/missingno)
1.Missingo庫的安裝
這里同樣是使用Anaconda,打開Anaconda的終端后,輸入如下語句進行Missingo庫的安裝
pipinstall missingno
2. Missingo庫實例演示
下面的樣例數據使用NYPD Motor VehicleCollisions Dataset 數據集.運行下面語句即可獲得數據
pipinstall quilt
quiltinstall ResidentMario/missingno_data
之后,加載數據到內存,輸入以下語句
fromquilt.data.ResidentMario import missingno_data
collisions= missingno_data.nyc_collision_factors()
collisions= collisions.replace("nan", np.nan)
在Missingo庫中,有幾個主要函數以不同方式的可視化展示數據集數據缺失情況。其中,Matrix是使用最多的函數,能快速直觀地看到數據集的完整性情況。輸入以下語句:
importmissingno as msno
%matplotlibinline
msno.matrix(collisions.sample(250))
程序運行后,矩陣顯示的結果如下。圖中右邊顯示的迷你圖總結了數據集的總的完整性分布,并標出了完整性最大和最小的點。
特別說明,這里也可以通過figsize指定輸出圖像大小,例如下面語句:msno.matrix(collisions.sample(250),figsize=(12,5))
此外,msno.bar函數也是一個非常有用的函數,可以簡單地展示無效數據的條形圖。
msno.bar(collisions.sample(1000))
程序運行后,顯示的數據條形圖:
在軟件需求、開發(fā)、測試過程中,我們可能會遇到需要生成一些測試數據或在分析中使用一些虛擬數據的情況。針對這種情況,我們一般要么使用已有的系統(tǒng)數據,要么需要手動制造一些數據。但由于現(xiàn)在的業(yè)務系統(tǒng)數據多種多樣,千變萬化。在手動制造數據的過程中,可能需要花費大量精力和工作量,此項工作既繁復又容易出錯,而且,部分數據的手造工作無法保障:比如UUID類數據、MD5、SHA加密類數據等。
Faker是一個Python庫,開源的GITHUB項目(https://github.com/joke2k/faker),主要用來創(chuàng)建偽數據,使用Faker包,無需再手動生成或者手寫隨機數來生成數據,只需要調用Faker提供的方法,即可完成數據的快速生成。
1.Faker庫的安裝
pipinstall faker
2.Faker庫實例演示
輸入下面語句,引用初始化
fromfaker import Faker
f=Faker(locale='zh_CN')
特別說明,關于初始化參數locale:為生成數據的文化選項,默認為英文(en_US)。如果要生成相對應的中文隨機信息(比如:名字,地址,郵編,城市,省份等),需使用zh_CN值。
之后,輸入下面語句,將隨機生成假的中文名字和地址,非常簡單易用。
fori in range(1,100):
print(f.name()+" "+f.address())
運行結果如下:
在情感數據分析方面,收集和分析有關表情符號的數據可以提供非常有用的信息。而表情符號是一種小到可以插入到表達情感或想法的文本中的圖像。它僅由使用鍵盤字符(如字母、數字和標點符號)組成。
Emot庫也是一個開源Github項目(https://github.com/NeelShah18/emot),可以幫助我們把表情符號emojis和emoticons轉換成單詞。它有一個很全面的表情符號與相應單詞映射的集合。
1.Emot庫的安裝,
輸入以下語句即可自動安裝
pipinstall emot
2.Emot庫實例演示
輸入下面語句
importemot
text= "I love python :-)"
emot.emoji(text)
emot.emoticons(text)
程序運行后,顯示結果如下,可以很清楚看到原語句中的人臉被識別轉換成了Happyface smiley文字信息。
盡管現(xiàn)在有很多創(chuàng)建圖表的工具,如Seaborn,Matplotlib,Plotly,Bokeh,Ggplot2,D3和Tableau等,但是仍然需要花費很多時間在創(chuàng)建圖表的細節(jié)上。為了讓操作簡單化,作為全球最大的正版流媒體音樂服務平臺之一Spotify開源了一個年度最佳Python庫Chartify(https://github.com/spotify/chartify)。它可以幫助你以簡單明了的方式創(chuàng)建圖表,讓數據可視化變得輕而易舉。與其他工具相比,Chartify庫具有用戶友好的語法和一致的數據格式。創(chuàng)建漂亮而快速的圖表所需的時間更少。
1.Chartify庫安裝,
輸入以下語句即可
pipinstall chartify
2.Chartify庫實例演示
Chartify庫安裝完成后,輸入下面語句,
importpandas as pd
importchartify
#Generate example data
data= chartify.examples.example_data()
到這里,我們已經加載了一些示例數據。下面對實例數據來做一些格式轉換:
total_quantity_by_month_and_fruit= (data.groupby(
[data['date'] +pd.offsets.MonthBegin(-1), 'fruit'])['quantity'].sum()
.reset_index().rename(columns={'date':'month'})
.sort_values('month'))
print(total_quantity_by_month_and_fruit.head())
接著,我們就可以將示例表格數據以圖的形式畫出來,輸入下面語句:
#Plot the data
ch= chartify.Chart(blank_labels=True, x_axis_type='datetime')
ch.set_title("Stackedarea")
ch.set_subtitle("Representchanges in distribution.")
ch.plot.area(
data_frame=total_quantity_by_month_and_fruit,
x_column='month',
y_column='quantity',
color_column='fruit',
stacked=True)
ch.show('png')
程序運行后,結果顯示如下。原示例數據中的水果種類(Apple,Banana,Grape,Orange,Apple),數量和時間以非常直觀清晰的方式展現(xiàn)出來。而整個過程的實現(xiàn),使用的語句非常簡潔。