python獲取字典中的所有鍵 python中鍵與值分別是什么?
python中鍵與值分別是什么?字典,那就是一種名為實(shí)際名字摘錄值的數(shù)據(jù)結(jié)構(gòu)。這種結(jié)構(gòu)類(lèi)型是反照類(lèi)型。它是一種key-value結(jié)構(gòu)的鍵值對(duì)。鍵這個(gè)可以是數(shù)字、字符串、元組。得象英漢詞典一樣,可以不是
python中鍵與值分別是什么?
字典,那就是一種名為實(shí)際名字摘錄值的數(shù)據(jù)結(jié)構(gòu)。這種結(jié)構(gòu)類(lèi)型是反照類(lèi)型。它是一種key-value結(jié)構(gòu)的鍵值對(duì)。鍵這個(gè)可以是數(shù)字、字符串、元組。得象英漢詞典一樣,可以不是從查看某個(gè)某種特定的詞語(yǔ)(鍵),從而找不到它的定義(值)。
鍵需要是真正的,但值則無(wú)須。值也可以取任何數(shù)據(jù)類(lèi)型,但鍵必須是萬(wàn)不可變的,如字符串,數(shù)字或元組。
哪條語(yǔ)句定義了python的字典?
格式:name{key1:value1,key2:value2,……}由鍵值對(duì)橫列,鍵要是不幾何渦輪數(shù)據(jù)類(lèi)型混編,一般是真正的,要是重復(fù)一遍則會(huì)覆蓋例:
dict{#34性別#34:#34女#34,#34年齡#34:18}
如何使用Python Pandas模塊讀取各類(lèi)型文件?
Python的pandas庫(kù)是使Python擁有主要用于數(shù)據(jù)分析的如此出色編程語(yǔ)言的一件事。Pandas使導(dǎo)入,分析和可視化數(shù)據(jù)變得異常十分很容易。它組建在NumPy和matplotlib之類(lèi)的軟件包的基礎(chǔ)上,使您這個(gè)可以方便些地參與大部分?jǐn)?shù)據(jù)分析和可視化工作。
在此Python數(shù)據(jù)科學(xué)教程中,我們將建議使用EricGrinstein破霸體的數(shù)據(jù),可以使用Pandas總結(jié)來(lái)自流行的視頻游戲評(píng)論網(wǎng)站IGN的視頻游戲評(píng)論。哪個(gè)主機(jī)贏得了“控制臺(tái)大戰(zhàn)”(就游戲的審查而言)?該數(shù)據(jù)集將指導(dǎo)我們找出答案。
當(dāng)我們結(jié)論視頻游戲評(píng)論時(shí),我們將了解關(guān)鍵的Pandas概念,例如索引。您也可以再繼續(xù)并且下來(lái),并在我們的許多其他Python教程之一中或按照去注冊(cè)PythonPandas課程來(lái)知道一點(diǎn)或是Python和Pandas的更多信息。我們的許多其他數(shù)據(jù)科學(xué)課程也都不使用Pandas。
千萬(wàn)記住幫一下忙,本教程可以使用Python3.5c語(yǔ)言程序,并建議使用JupyterNotebook最終形成。您很可能使用的是Python,pandas和Jupyter的更新版本,但而估計(jì)基本是是一樣的。
用Pandas導(dǎo)入數(shù)據(jù)
假如您也在不使用本教程,則不需要下載數(shù)據(jù)集,您也可以在此處參與你操作。
我們將采取的措施的目標(biāo)是讀取數(shù)據(jù)。數(shù)據(jù)以逗號(hào)分隔開(kāi)來(lái)的值或csv文件存儲(chǔ),其中5行用換行互相連通,每列用逗號(hào)(,)分隔。這是ign.csv文件的前幾行:
如您在上方看見(jiàn)了的,文件中的每一行代表一個(gè)游戲,該游戲也過(guò)IGN審查。這些列真包含或是該游戲的信息:
1)score_phrase—IGN怎么用一個(gè)詞可以形容游戲。這鏈接到它收到的分?jǐn)?shù)。
2)title-游戲名稱(chēng)。
3)url—您可以不在其中欄里點(diǎn)求完整評(píng)論的URL。
4)platform-審查游戲的平臺(tái)(PC,PS4等)。
5)score—游戲的得分多,從1.0到10.0。
6)genre—游戲類(lèi)型。
7)editors_choice-N如果游戲不是什么編輯選擇的Y話(huà),這樣的話(huà)是。這與得分息息相關(guān)。
8)release_year-游戲先發(fā)布的年份。
9)release_month-游戲首頁(yè)的月份。
10)release_day-游戲查找的那天。
還有一個(gè)一個(gè)前導(dǎo)列,其中包含行索引值。我們可以不放心吧地看出此列,但三日后將深入討論哪些索引值。
是為在Python和pandas中管用地全面處理數(shù)據(jù),我們必須將csv文件讀取到PandasDataFrame中。DataFrame是意思是和全面處理表格數(shù)據(jù)的一種,表格數(shù)據(jù)是表格形式的數(shù)據(jù),例如電子表格。表格數(shù)據(jù)具有行和列的格式,看上去像我們的csv文件完全不一樣,不過(guò)如果不是我們也可以將其另外表格打開(kāi)系統(tǒng),則對(duì)于更也易閱讀和排序。
是為輸入數(shù)據(jù)數(shù)據(jù),我們必須建議使用_csv函數(shù)。此函數(shù)將可以接收一個(gè)csv文件并直接返回一個(gè)DataFrame。以上代碼將:
a.文件導(dǎo)入pandas庫(kù)。我們將其文件屬性為,pd以便于更快地鍵入。這是數(shù)據(jù)分析和數(shù)據(jù)科學(xué)中的標(biāo)準(zhǔn)約定,您每天都會(huì)看見(jiàn)了導(dǎo)入的Pandas那像pd其他人的代碼一樣。
b.讀ign.csv入一個(gè)DataFrame,并將結(jié)果未分配給一個(gè)名為的新變量,reviews以備萬(wàn)一我們是可以reviews用處直接引用我們的數(shù)據(jù)。
繼續(xù)讀DataFrame后,以更形象直觀的看下我們所完成的內(nèi)容將很有幫助。Pandas方便些地為我們提供給了兩種方法,是可以飛快地將數(shù)據(jù)不打印到表中。這些功能是:
1)DataFrame.head()—再打印DataFrame的前N行,其中N是您充當(dāng)參數(shù)傳信給函數(shù)的數(shù)字,即DataFrame.head(7)。如果不訊息傳遞任何參數(shù),則缺省為5。
2)DataFrame.tail()—打印出來(lái)DataFrame的到最后N行。同樣,默認(rèn)值為5。
我們將可以使用該head方法欄里點(diǎn)其中的內(nèi)容reviews:
我們還可以不ftp訪(fǎng)問(wèn)屬性,以欄里點(diǎn)以下行reviews:
如我們所見(jiàn),所有內(nèi)容均已正確的讀取數(shù)據(jù)-我們有18,625行和11列。
與相似的NumPy這樣的Python軟件包相比較,使用Pandas的一大優(yōu)勢(shì)是Pandas允許我們具備具備不同數(shù)據(jù)類(lèi)型的列。在我們的數(shù)據(jù)集中,reviews我們有存儲(chǔ)浮點(diǎn)值(如)score,字符串值(如score_phrase)和整數(shù)(如)的列release_year,而在此處使用NumPy會(huì)很很難,但Pandas和Python也可以非常好地處理它。
現(xiàn)在我們巳經(jīng)錯(cuò)誤的地加載了數(shù)據(jù),讓我們又開(kāi)始建立索引reviews以某些所需的行和列。
用Pandas索引DataFrames
之前,我們使用了該head方法來(lái)打印的第一5行reviews。我們這個(gè)可以使用方法完成同時(shí)的事情。該iloc方法容許我們按位置檢索到行和列。而,我們需要重新指定所需行的位置以及所需列的位置。下面的代碼將reviews.head()按照中,選擇行0到5,包括數(shù)據(jù)幾乎全部的所有列來(lái)不能復(fù)制我們的結(jié)果:
讓我們更探索地想研究我們的代碼:我們重新指定了想的rows0:5。這意味著我們要想從position0到(但不包括)position的行5。
第一行被如果說(shuō)是在位置0,所以你選擇行0:5給了我們行的位置0,1,2,3,和4。我們也不需要所有列,因此可以使用快捷來(lái)你選它們。它的工作是這樣的:如果沒(méi)有我們不比較喜歡第一個(gè)位置值,例如:5,那是題中我們的意思0。假如我們忽視了還有一個(gè)位置值(如)0:,則簡(jiǎn)單假設(shè)我們是指DataFrame中的結(jié)果一行或后來(lái)一列。我們必須所有列,并且只指定你了一個(gè)冒號(hào)(:),沒(méi)有任何位置。這使我們的列從0到到最后一列。以下是一些索引示例以及結(jié)果:
1)[:5,:]—第一5行,這些這些行的所有列。
2)[:,:]—整個(gè)DataFrame。
3)[5:,5:]—從位置5正在的行,從位置結(jié)束的列5。
4)[:,0]—第一列,以及該列的所有行。
5)[9,:]—第十行,和重慶農(nóng)商行的所有列。
按位置索引與NumPy索引非常相象。如果不是您想了解一些信息,這個(gè)可以寫(xiě)作我們的NumPy教程?,F(xiàn)在我們知道了要如何按位置索引,讓我們刪掉第一列,該列沒(méi)有任何用處不大的信息:
在Pandas中建議使用標(biāo)簽在Python中建立起索引
若是我們明白如何能按位置檢索行和列,這樣的話(huà)值得去愛(ài)研究建議使用DataFrames的另一種通常方法,即按標(biāo)簽檢索到行和列。與NumPy而言,Pandas的比較多優(yōu)勢(shì)只是相對(duì)而言,每一列和每一行也有一個(gè)標(biāo)簽??梢蕴幚砹械奈恢?,可是沒(méi)法潛進(jìn)來(lái)哪個(gè)數(shù)字對(duì)應(yīng)于哪個(gè)列。
我們可以使用方法處理標(biāo)簽,該方法不允許我們可以使用標(biāo)簽而不是位置進(jìn)行索引。我們也可以reviews建議使用200元以?xún)?nèi)loc方法不顯示前五行:
上面的內(nèi)容只不過(guò)與并沒(méi)有什么太大的不同[0:5,:]。這是是因?yàn)榈袠?biāo)簽可以常規(guī)任何值,但我們的行標(biāo)簽與位置精確匹配。您可以不在上方表格的最左側(cè)注意到行標(biāo)簽(它們以粗體會(huì)顯示)。您還是可以按照訪(fǎng)問(wèn)網(wǎng)絡(luò)DataFrame的index屬性來(lái)一欄它們。我們將顯示的行索引reviews:
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, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,...],dtypeint64)
不過(guò),索引不當(dāng)然我總是與位置不兼容。在下面的代碼單元中,我們將:
a.獲取行10至行20的reviews,并分配結(jié)果some_reviews。
b.會(huì)顯示的第一5行some_reviews。
如前述所示,在中some_reviews,行索引起始于,10都結(jié)束了于20。所以,數(shù)次loc不使用大于010或?yàn)?的數(shù)字20將會(huì)造成錯(cuò)誤:
some_reviews.loc[9:21,:]
如前文所述,在可以使用數(shù)據(jù)時(shí),列標(biāo)簽也可以使工作變得異常越來(lái)越很快。我們可以在loc方法中指定你列標(biāo)簽,以按標(biāo)簽而又不是按位置檢索數(shù)據(jù)庫(kù)列。
我們還這個(gè)可以是從傳入列表來(lái)第二次更改多個(gè)列:
Pandas系列對(duì)象
我們這個(gè)可以幾種相同的在Pandas中檢索到單個(gè)列。到目前為止,我們?cè)缈匆?jiàn)了兩種語(yǔ)法:
1)[:,1]—將檢索系統(tǒng)第二列。
2)reviews.loc[:,score_phrase]—還將檢索數(shù)據(jù)庫(kù)第二列。
另外第三種甚至于更太容易的方法來(lái)檢索整列。我們這個(gè)可以在方括號(hào)中重新指定列名稱(chēng),例如建議使用字典:
我們還是可以通過(guò)以上方法可以使用列列表:
當(dāng)我們檢索系統(tǒng)單個(gè)列時(shí),實(shí)際上是在檢索Pandas Series對(duì)象。DataFrame存儲(chǔ)表格數(shù)據(jù),而Series存儲(chǔ)數(shù)據(jù)的單列或單行。
我們這個(gè)可以驗(yàn)證單個(gè)列有無(wú)為系列:
我們這個(gè)可以自動(dòng)創(chuàng)建角色系列以好些地清楚其工作原理。要?jiǎng)?chuàng)建戰(zhàn)隊(duì)一個(gè)Series,我們?cè)陟o態(tài)方法它時(shí)將一個(gè)列表或NumPy數(shù)組傳達(dá)給Series對(duì)象:
系列也可以中有任何類(lèi)型的數(shù)據(jù),和水配類(lèi)型。在這里,我們創(chuàng)建家族一個(gè)乾坤二卦字符串對(duì)象的系列:
在Pandas中修改一個(gè)DataFrame
我們這個(gè)可以實(shí)際將多個(gè)Series傳達(dá)到DataFrame類(lèi)中來(lái)創(chuàng)建DataFrame。在這里,我們傳去上次創(chuàng)建家族的兩個(gè)Series對(duì)象,
s1才是第一行,s2作為第二行:
我們還是可以建議使用列表列表結(jié)束同樣的的事情。每個(gè)內(nèi)部列表在結(jié)果DataFrame中被更視一行:
我們也可以在修改DataFrame時(shí)指定你列標(biāo)簽:
和行標(biāo)簽(索引):
還請(qǐng)注意一點(diǎn),不要窩進(jìn)和不能的行。我們?cè)缇鸵赃@種匯編語(yǔ)言了代碼,以使其更很易解析,不過(guò)您經(jīng)常會(huì)遇到將它們所有可以寫(xiě)成一行的情況?;蛘撸?00以?xún)?nèi)代碼將才能產(chǎn)生與我們?cè)诒径紊戏降谋碇凶⒁獾降慕Y(jié)果全部同一的結(jié)果:
不管怎么說(shuō),添加標(biāo)簽后,便是可以使用它們對(duì)DataFrame通過(guò)索引:
columns如果沒(méi)有將字典傳信給DataFrame構(gòu)造函數(shù),則可以不跳過(guò)指定你關(guān)鍵字參數(shù)的操作。這將自動(dòng)設(shè)置列名稱(chēng):
PandasDataFrame方法
通常而言,scikit-learnDataFrame中的每一列都是Series對(duì)象:
我們也可以在Series對(duì)象上全局函數(shù)與在DataFrame上是可以動(dòng)態(tài)創(chuàng)建的大多數(shù)不同的方法,以及head:
PandasSeries和DataFrames還具高其他使可以計(jì)算更最簡(jiǎn)單方法。例如,我們可以使用方法來(lái)直接輸入Series的均值:
我們還可以動(dòng)態(tài)創(chuàng)建帶有的方法,該方法設(shè)置成情況下將查看DataFrame中每個(gè)數(shù)字列的平均值:
我們可以不如何修改axis關(guān)鍵字參數(shù)以mean換算每行或每列的平均值。默認(rèn)情況下,axis40,并將算出每列的平均值。我們還是可以將其系統(tǒng)設(shè)置1為計(jì)算每行的平均值。請(qǐng)?jiān)僮⒁?,這只會(huì)計(jì)算每行中數(shù)值的平均值:
(axis1)
0510.500
1510.500
2510.375
3510.125
4510.125
5509.750
6508.750
7510.250
8508.750
9509.750
10509.875
11509.875
12509.500
13509.250
14509.250
...
18610510.250
18611508.700
18612509.200
18613508.000
18614515.050
18615515.050
18616508.375
18617508.600
18618515.025
18619514.725
18620514.650
18621515.000
18622513.950
18623515.000
18624515.000
Length:18625,dtype:float64
Series和DataFrames上有很多類(lèi)似的方法necessarily。這里有一些更方便的東西:
1)—里查DataFrame中各列之間的相關(guān)性。
2)—換算每個(gè)DataFrame列中非空值的數(shù)量。
3)—在每一列中可以找到最大值。
4)—查找每一列中的最小值。
5)—里查每列的中位數(shù)。
6)—中搜索每列的標(biāo)準(zhǔn)偏差。
.例如,我們可以不使用該corr方法打開(kāi)系統(tǒng)是否需要有任何列與關(guān)聯(lián)score。這這個(gè)可以告訴我們最近公告的游戲完成了更高的評(píng)價(jià)(release_year),我還是在年底之前先發(fā)布的游戲我得到了更好的評(píng)分(release_month):
正如我們?cè)谏厦嬉?jiàn)到的那樣,我們的數(shù)字列都沒(méi)有與關(guān)聯(lián)score,因此我們知道發(fā)布時(shí)間與評(píng)論評(píng)分卻不是線(xiàn)性關(guān)系。
DataFrameMath與Pandas
我們還是可以使用pandas在Python中的Series或DataFrame對(duì)象上負(fù)責(zé)執(zhí)行數(shù)算?;蛘撸覀円部梢詫core列中的每個(gè)值乘以2以將刻度從0–直接切換10到0–5:
reviews[score]/2
04.50
14.50
24.25
34.25
44.25
53.50
61.50
74.50
81.50
93.50
103.75
113.75
123.50
134.50
144.50
...
186103.00
186112.90
186123.90
186134.00
186144.60
186154.60
186163.75
186174.20
186184.55
186193.95
186203.80
186214.50
186222.90
186235.00
186245.00
Name:score,Length:18625,dtype:float64
所有常用的數(shù)算符在Python的工作,如,-,*,/,和^將在系列或DataFrames大Pandas的工作,但是將適用于每一個(gè)元素在一個(gè)數(shù)據(jù)幀或一個(gè)系列。
Pandas中的布爾索引
現(xiàn)在我們已經(jīng)清楚了一些Pandas的基礎(chǔ)知識(shí),讓我們繼續(xù)進(jìn)行分析。我們前面看見(jiàn)的,你算算都在值的score列reviews左右7。如果我們想能找到所有內(nèi)線(xiàn)得分都高于平均水平的游戲該怎么辦啊?
我們這個(gè)可以先并且都很。也很會(huì)將“系列”中的每個(gè)值與更改值并且比較好,后再生成氣體一個(gè)“系列”,其中真包含可以表示比較比較狀態(tài)的布爾值。在用Python Pandas分析視頻游戲數(shù)據(jù)或者,發(fā)現(xiàn)哪些行的score值為07:
score_filterreviews[score]a87
score_filter
0True
1True
2True
3True
4True
5False
6False
7True
8False
9False
10True
11True
12False
13True
14True...
18610False
18611False
18612True
18613True
18614True
18615True
18616True
18617True
18618True
18619True
18620True
18621True
18622False
18623True
18624True
Name:score,Length:18625,dtype:bool
有了布爾系列后,我們可以不在用它來(lái)你選擇DataFrame中該系列包含value的行True。因此,我們沒(méi)法選擇類(lèi)型行reviews,其中score大于17:
這個(gè)可以不使用多個(gè)條件進(jìn)行過(guò)濾。舉例我們要中搜索因?yàn)榘l(fā)行Xbox One的得分將近的游戲7。在下面的代碼中,我們:
a.設(shè)置里兩個(gè)條件的過(guò)濾器:
1)檢查有無(wú)score大于07。
2)檢查是否需要platform之和Xbox One
b.應(yīng)用過(guò)濾器以reviews僅聲望兌換所需的行。
c.不使用head方法打印的第一5行filtered_reviews。
在不使用多個(gè)條件并且過(guò)濾時(shí),將每個(gè)條件放在旁邊括號(hào)中并用一個(gè)amp符號(hào)(amp)相互交錯(cuò)是很重要的。
Pandas圖
現(xiàn)在我們明白了如何過(guò)濾,我們也可以創(chuàng)建圖以觀察的回顧廣泛分布Xbox One與的回顧廣泛分布PlayStation 4。這將好處我們確定哪個(gè)控制臺(tái)更具更好的游戲。
我們也可以按照直方圖來(lái)能做到這一點(diǎn),該直方圖將繪制相同得分范圍內(nèi)的頻率。我們是可以使用方法為每個(gè)控制臺(tái)可以制作一個(gè)直方圖。該方法利用幕后的流行Python繪圖庫(kù)matplotlib生成美觀的繪圖。
該plot方法設(shè)置成為草圖折線(xiàn)圖。我們是需要傳來(lái)關(guān)鍵字參數(shù)kindhist來(lái)繪制直方圖。在下面的代碼中,我們:
a.咨詢(xún)%matplotlibinline以在Jupyter筆記本中系統(tǒng)設(shè)置繪圖。
b.過(guò)濾reviews以?xún)H中有或者的數(shù)據(jù)Xbox One。
c.繪制的score列。
我們也可以不對(duì)PS4:
從我們的直方圖中更說(shuō)明,與相比,PlayStation 4具有更高評(píng)級(jí)的游戲Xbox One。
很顯然,這只是冰山一角,比較復(fù)雜到我們這個(gè)可以用來(lái)總結(jié)該數(shù)據(jù)集的潛在方向,但我們巳經(jīng)有了一個(gè)挺好的的開(kāi)端:我們已經(jīng)可以使用Python和pandas導(dǎo)入了數(shù)據(jù)集,并能學(xué)會(huì)了使用各種相同的索引方法選擇我們打算的數(shù)據(jù)點(diǎn),并通過(guò)了一些飛快的探索性數(shù)據(jù)分析,以解釋我們結(jié)束時(shí)遇到的問(wèn)題。