python怎樣讀取cxcel表格行列,并全排列組合輸出?
a列和cbd列分別被組合和遍歷。
進(jìn)口熊貓作為pd
_exc
python3dataframe怎么去重復(fù)數(shù)據(jù)?
導(dǎo)入熊貓為PDdata_CSV(d:/DDD.txt)print(data.drop_duplicat
python中csv如何按列寫(xiě)入元組?
用熊貓讀取的方法是_csv(),結(jié)果是datafram:導(dǎo)入熊貓asPD導(dǎo)入NUMPYasNPFile_Content_csv(r#39C:新建一個(gè)文件夾。
esult123.csv#39)行(文件內(nèi)容)lx()
如何使用PythonPandas模塊讀取各類(lèi)型文件?
Pythonpandas庫(kù)是Python成為數(shù)據(jù)分析優(yōu)秀編程語(yǔ)言的原因之一。Pandas使導(dǎo)入、分析和可視化數(shù)據(jù)變得更加容易。它基于NumPy和matplotlib等軟件包,方便您進(jìn)行大部分?jǐn)?shù)據(jù)分析和可視化。
在這篇Python數(shù)據(jù)科學(xué)教程中,我們將使用EricGrinstein捕獲的數(shù)據(jù),使用熊貓來(lái)分析來(lái)自流行的視頻游戲評(píng)論網(wǎng)站IGN的視頻游戲評(píng)論。哪個(gè)主持人贏得了"控制臺(tái)戰(zhàn)爭(zhēng)與游戲(游戲?qū)彶榉矫??這個(gè)數(shù)據(jù)集將幫助我們找到答案。
當(dāng)我們分析視頻游戲評(píng)論時(shí),我們將理解關(guān)鍵的熊貓概念,例如索引。您可以在我們的其他Python教程中學(xué)習(xí)更多關(guān)于Python和Pandas的知識(shí),或者注冊(cè)PythonPandas課程。熊貓也用于我們的許多其他數(shù)據(jù)科學(xué)課程。
請(qǐng)記住,本教程是用Python3.5編寫(xiě)的,內(nèi)置在JupyterNotebook中。你可能用的是較新版本的Python,pandas和Jupyter,但是結(jié)果應(yīng)該基本相同。
用熊貓導(dǎo)入數(shù)據(jù)
如果你正在使用本教程,你需要下載數(shù)據(jù)集,你可以在這里。
我們將采取的第一步是讀取數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)在逗號(hào)分隔值或csv文件中,其中每行由換行符分隔,每列由逗號(hào)(,)分隔。以下是ign.csv文件的前幾行:
正如您在上面看到的,該文件中的每一行都代表一款游戲,已經(jīng)過(guò)IGN審核。這些欄包含關(guān)于游戲的信息:
1)1)score_phrase—IGN如何用一個(gè)詞描述游戲。這鏈接到它收到的分?jǐn)?shù)。
2)標(biāo)題——游戲的名稱(chēng)。
3)url—您可以在其中查看完整注釋的URL。
4)平臺(tái)——一個(gè)評(píng)論游戲的平臺(tái)(PC,PS4等。).
5)分?jǐn)?shù)——游戲的分?jǐn)?shù),從1.0到10.0。
6)流派——游戲類(lèi)型。
7)editors_choice-N如果游戲不是編輯選擇的Y,那么就是。這和分?jǐn)?shù)密切相關(guān)。
8)release_year——游戲發(fā)布的年份。
9)release_month——游戲發(fā)布的月份。
10)release_day——游戲發(fā)布的那一天。
還有一個(gè)包含行索引值的前導(dǎo)列。我們可以放心地忽略該列,但是我們將在后面深入討論哪些索引值。
為了在Python和pandas中有效地處理數(shù)據(jù),我們需要將csv文件讀入PandasDataframe。Dataframe是一種表示和處理表格數(shù)據(jù)的,也就是表格數(shù)據(jù),比如電子表格。表格數(shù)據(jù)具有行和列的格式,就像我們的csv文件一樣,但是如果我們可以將其作為表格來(lái)查看,我們將更容易讀取和排序。
為了讀入數(shù)據(jù),我們需要使用_csv函數(shù)。這個(gè)函數(shù)將接收一個(gè)csv文件并返回一個(gè)數(shù)據(jù)幀。以下代碼將:
A.導(dǎo)入熊貓庫(kù)。為了更快地輸入,我們將其重命名為pd。這是數(shù)據(jù)分析和數(shù)據(jù)科學(xué)中的標(biāo)準(zhǔn)約定。你會(huì)經(jīng)常看到進(jìn)口的熊貓和其他人一樣。;pd中的s代碼。
B.將ign.csv讀入Dataframe,并將結(jié)果賦給一個(gè)名為reviews的新變量,這樣我們就可以使用reviews來(lái)引用我們的數(shù)據(jù)。
讀完Dataframe,用更直觀(guān)的看看我們得到了什么,會(huì)很有幫助。Pandas方便地為我們提供了兩種快速將數(shù)據(jù)打印到表格中的方法。這些功能是:
1)Dataframe.head()—打印Dataframe的前n行,其中n是作為參數(shù)傳遞給函數(shù)的數(shù)字,即Dataframe.head(7)。如果沒(méi)有傳遞參數(shù),默認(rèn)值為5。
2)Dataframe.tail()—打印Dataframe的最后n行。同樣,默認(rèn)值是5。
我們將使用此標(biāo)題方法來(lái)查看內(nèi)容評(píng)論:我們還可以訪(fǎng)問(wèn)酒店,查看以下線(xiàn)路評(píng)論:
正如我們所看到的,一切都被正確地讀取了——我們有18,625行和11列。
與像NumPy這樣的Python包相比,使用Pandas的一個(gè)優(yōu)點(diǎn)是它允許我們擁有不同數(shù)據(jù)類(lèi)型的列。在我們的數(shù)據(jù)集中,reviews有一個(gè)列release_year,存儲(chǔ)浮點(diǎn)值(比如score)、字符串值(比如score_phrase)和整數(shù)(比如),所以在這里使用NumPy會(huì)比較困難,但是Pandas和Python可以很好地處理。
既然我們已經(jīng)正確地讀取了數(shù)據(jù),讓讓我們開(kāi)始構(gòu)建索引審查,以獲得所需的行和列。
用熊貓索引數(shù)據(jù)幀
以前,我們使用這種標(biāo)題方法來(lái)打印前5行評(píng)論。我們可以使用該方法來(lái)完成同樣的事情。這個(gè)iloc方法允許我們按位置檢索行和列。為此,我們需要指定所需行的位置和所需列的位置。以下代碼通過(guò)選擇數(shù)據(jù)集中的第0行到第5行以及所有列來(lái)復(fù)制我們的結(jié)果:
讓讓我們更深入地研究我們的代碼:我們指定了所需的行0:5。這意味著我們希望第5行從位置0到(但不包括)位置。
第一行被認(rèn)為是在位置0,所以選擇行0:5給我們位置0,1,2,3,4。我們還需要所有的列,并使用快捷鍵來(lái)選擇它們。它是這樣工作的:如果我們不不喜歡第一個(gè)位置值,比如:5,假設(shè)我們的意思是0。如果我們忽略最后一個(gè)位置值(如)0:),則假設(shè)我們指的是DataFram:),沒(méi)有任何位置。這會(huì)將我們的列從0移動(dòng)到最后一列。以下是一些索引示例和結(jié)果:
1)[:5,:]-前5行,以及這些行的所有列。
2)[:,:]-整個(gè)數(shù)據(jù)幀。
3)[5:,5:]-行從位置5開(kāi)始,列從位置5開(kāi)始。
4)[:,0]—第一列,以及該列中的所有行。
5)[9,:]-第十行,以及這一行的所有列。
按位置索引非常類(lèi)似于NumPy索引。如果想了解更多,可以看看我們的NumPy教程。現(xiàn)在我們知道了如何通過(guò)位置索引,讓讓我們刪除第一列。;我沒(méi)有任何有用的信息:
在Pandas中使用標(biāo)簽在Python中創(chuàng)建索引
既然我們知道了如何按位置檢索行和列,那么值得研究使用Dataframes的另一個(gè)主要方法,即按標(biāo)簽檢索行和列。與NumPy相比,熊貓的主要優(yōu)勢(shì)是每一列每一行都有一個(gè)標(biāo)簽。您可以處理列的位置,但是很難跟蹤哪個(gè)數(shù)字對(duì)應(yīng)于哪個(gè)列。
我們可以使用方法來(lái)處理標(biāo)簽,這允許我們使用標(biāo)簽而不是位置進(jìn)行索引。我們可以使用下面的loc方法來(lái)顯示r:5,:】沒(méi)有太大區(qū)別。這是因?yàn)楸M管行標(biāo)簽可以取任何值,但是我們的行標(biāo)簽與位置完全匹配。您可以在上表的最左側(cè)看到行標(biāo)簽(它們以粗體顯示)。您也可以通過(guò)訪(fǎng)問(wèn)Dataframe的index屬性來(lái)查看它們。我們將顯示行索引評(píng)論:
Int64Index([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,4281,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,...],dtypeint64)
但是,索引并不總是與位置匹配。在下面的代碼單元中,我們將:
A.從第10行到第20行獲取評(píng)論,并將結(jié)果分配給some_reviews。
B.一些顯示的前5行評(píng)論.
如上圖,在某些_reviews中,行索引從開(kāi)始,10到20結(jié)束。因此,嘗試將小于10或大于10的數(shù)字20用于loc將導(dǎo)致錯(cuò)誤:
some_reviews.loc[9:21,:]
如前所述,使用數(shù)據(jù)時(shí),列標(biāo)簽可以使工作更容易。我們可以在loc方法中指定列標(biāo)簽,通過(guò)標(biāo)簽而不是位置來(lái)檢索列。
我們還可以通過(guò)傳入一個(gè)列表來(lái)一次指定多個(gè)列:
熊貓系列物品
我們可以用幾種不同的方法在Pandas中檢索一個(gè)單獨(dú)的列。到目前為止,我們已經(jīng)看到了兩種語(yǔ)法:
1)[:,1]—檢索第二列。
2)reviews.loc[:,scor:18625,dtyp:浮動(dòng)64
在序列和數(shù)據(jù)幀上也有類(lèi)似的方法。這里有一些方便的東西:
1)—找出數(shù)據(jù)幀中各列之間的相關(guān)性。
2)—計(jì)算每個(gè)Dataframe列中非空值的數(shù)量。
3)—找出每列中的最大值。
4)—找出每列中的最小值。
5)—求每列的中值。
6)-檢查求每列的標(biāo)準(zhǔn)差。
例如,我們可以使用這個(gè)corr方法來(lái)查看是否有任何列與分?jǐn)?shù)相關(guān)聯(lián)。這可以告訴我們是最近發(fā)布的游戲獲得了更高的評(píng)級(jí)(r:得分,L:18625,dtyp:浮動(dòng)64
所有常用的數(shù)算符都在Python中工作,例如,-、*、/,并將在序列或數(shù)據(jù)幀中工作,并將應(yīng)用于數(shù)據(jù)幀或序列中的每個(gè)元素。
熊貓的布爾索引
既然我們已經(jīng)了解了一些關(guān)于熊貓的基本知識(shí),讓我們一起來(lái)學(xué)習(xí)吧。;讓我們繼續(xù)分析。我們之前看到的,平均來(lái)說(shuō),在評(píng)分欄中的價(jià)值評(píng)價(jià)是7左右。如果我們想找到所有分?jǐn)?shù)高于平均水平的游戲呢?
我們可以先做個(gè)對(duì)比。Comparison將序列中的每個(gè)值與指定的值進(jìn)行比較,然后生成一個(gè)包含指示比較狀態(tài)的布爾值的序列。使用PythonPand分析視頻游戲數(shù)據(jù)。例如,我們可以看到哪些行的得分大于7:
分?jǐn)?shù)_過(guò)濾評(píng)論[分?jǐn)?shù)]gt7
分?jǐn)?shù)_過(guò)濾器
0真
1正確
2正確
3正確
4正確
5錯(cuò)誤
6錯(cuò)誤
7正確
8假
9假
10正確
11正確
12個(gè)錯(cuò)誤
13正確
14對(duì)...
18610假
18611錯(cuò)誤
18612正確
18613正確
18614正確
18615正確
18616真
18617正確
18618正確
18619正確
18620正確
18621正確
18622錯(cuò)誤
18623正確
18624正確
Nam:得分,L:18625,dtyp:·波爾
對(duì)于布爾序列,我們可以使用它在序列包含值的數(shù)據(jù)幀中選擇行True。因此,我們只能選擇得分大于7的行評(píng)審:
您可以使用多個(gè)篩選標(biāo)準(zhǔn)。假設(shè)我們?cè)趯ふ野l(fā)布XboxOne得分超過(guò)0的第7場(chǎng)比賽。在下面的代碼中,我們:
A.為兩個(gè)條件設(shè)置過(guò)濾器:
1)檢查分?jǐn)?shù)是否大于7。
2)檢查平臺(tái)是否等于XboxOne。
B.應(yīng)用篩選器僅查看所需的行。
C.head方法打印的前5行是filtered_reviews。
當(dāng)使用多個(gè)條件進(jìn)行篩選時(shí),將每個(gè)條件放在括號(hào)中并用amp符號(hào)分隔是很重要的。
熊貓圖
現(xiàn)在我們知道了如何篩選,我們可以創(chuàng)建圖表來(lái)觀(guān)察XboxOne和PlayStation4的回溯分布。這將幫助我們確定哪個(gè)主機(jī)的游戲更好。
我們可以通過(guò)直方圖來(lái)做到這一點(diǎn),直方圖將繪制不同得分范圍內(nèi)的頻率。我們可以使用該方法為每個(gè)控制臺(tái)制作一個(gè)直方圖。這種方法在幕后使用流行的Python繪圖庫(kù)matplotlib來(lái)生成漂亮的圖像。畫(huà)畫(huà)。
繪圖方法默認(rèn)為繪制折線(xiàn)圖。我們需要傳入關(guān)鍵字參數(shù)kindhist來(lái)繪制直方圖。在下面的代碼中,我們:
A.內(nèi)聯(lián)調(diào)用%matplotlib在Jupyter筆記本中設(shè)置繪圖。
B.過(guò)濾評(píng)論,僅包含相關(guān)數(shù)據(jù)。
C.畫(huà)分?jǐn)?shù)欄。
我們還可以談?wù)凱S4:
從我們的柱狀圖可以看出,PlayStation4的評(píng)分高于XboxOne。
顯然,這只是冰山一角,這涉及到我們可以用來(lái)分析數(shù)據(jù)集的潛在方向,但我們已經(jīng)有了一個(gè)良好的開(kāi)端:我們使用Python和pandas導(dǎo)入了數(shù)據(jù)集,學(xué)會(huì)了使用各種索引方法來(lái)選擇我們想要的數(shù)據(jù)點(diǎn),并進(jìn)行了一些快速的探索性數(shù)據(jù)分析,以回答我們一開(kāi)始遇到的問(wèn)題。