-
1 # 你妹的老是重名
-
2 # 52sissi
Python的pandas庫是使Python成為用於資料分析的出色程式語言的一件事。Pandas使匯入,分析和視覺化資料變得更加容易。它建立在NumPy和matplotlib之類的軟體包的基礎上,使您可以方便地進行大部分資料分析和視覺化工作。
當我們分析影片遊戲評論時,我們將瞭解關鍵的Pandas概念,例如索引。您可以繼續進行下去,並在我們的許多其他Python教程之一中或透過註冊Python Pandas課程來了解有關Python和Pandas的更多資訊。我們的許多其他資料科學課程也都使用Pandas。
謹記一下,本教程使用Python 3.5編寫,並使用Jupyter Notebook構建。您可能使用的是Python,pandas和Jupyter的更新版本,但結果應該基本相同。
用Pandas匯入資料
如果您正在使用本教程,則需要下載資料集,您可以在此處進行操作。
我們將採取的第一步是讀取資料。資料以逗號分隔的值或csv檔案儲存,其中每行用換行分隔,每列用逗號(,)分隔。這是ign.csv檔案的前幾行:
如您在上方看到的,檔案中的每一行代表一個遊戲,該遊戲已經過IGN審查。這些列包含有關該遊戲的資訊:
1)score_phrase— IGN如何用一個詞形容遊戲。這連結到它收到的分數。
2)title -遊戲名稱。
4)platform -審查遊戲的平臺(PC,PS4等)。
5)score—遊戲的得分,從1.0到10.0。
6)genre —遊戲型別。
7)editors_choice- N如果遊戲不是編輯選擇的Y話,那麼是。這與得分息息相關。
8)release_year -遊戲釋出的年份。
9)release_month -遊戲釋出的月份。
10)release_day -遊戲釋出的那天。
還有一個前導列,其中包含行索引值。我們可以放心地忽略此列,但稍後將深入探討哪些索引值。
為了在Python和pandas中有效地處理資料,我們需要將csv檔案讀取到Pandas DataFrame中。DataFrame是表示和處理表格資料的一種方式,表格資料是表格形式的資料,例如電子表格。表格資料具有行和列的格式,就像我們的csv檔案一樣,但是如果我們可以將其作為表格檢視,則對我們來說更易於閱讀和排序。
為了讀入資料,我們需要使用pandas.read_csv函式。此函式將接收一個csv檔案並返回一個DataFrame。以下程式碼將:
a.匯入pandas庫。我們將其重新命名為,pd以便更快地輸入。這是資料分析和資料科學中的標準約定,您經常會看到匯入的Pandas就像pd其他人的程式碼一樣。
b.讀ign.csv入一個DataFrame,並將結果分配給一個名為的新變數,reviews以便我們可以reviews用來引用我們的資料。
讀完DataFrame後,以更直觀的方式看一下我們所獲得的內容將很有幫助。Pandas方便地為我們提供了兩種方法,可以快速地將資料列印到表中。這些功能是:
1)DataFrame.head()—列印DataFrame的前N行,其中N是您作為引數傳遞給函式的數字,即DataFrame.head(7)。如果不傳遞任何引數,則預設值為5。
2)DataFrame.tail()—列印DataFrame的最後N行。同樣,預設值為5。
我們將使用該head方法檢視其中的內容reviews:
我們還可以訪問pandas.DataFrame.shape屬性,以檢視以下行reviews:
如我們所見,所有內容均已正確讀取-我們有18,625行和11列。
與類似的NumPy這樣的Python軟體包相比,使用Pandas的一大優勢是Pandas允許我們擁有具有不同資料型別的列。在我們的資料集中,reviews我們有儲存浮點值(如)score,字串值(如score_phrase)和整數(如)的列release_year,因此在此處使用NumPy會很困難,但Pandas和Python可以很好地處理它。
現在我們已經正確地讀取了資料,讓我們開始建立索引reviews以獲取所需的行和列。
用Pandas索引DataFrames
之前,我們使用了該head方法來列印的第一5行reviews。我們可以使用pandas.DataFrame.iloc方法完成同樣的事情。該iloc方法允許我們按位置檢索行和列。為此,我們需要指定所需行的位置以及所需列的位置。下面的程式碼將reviews.head()透過選擇行0到5,以及資料集中的所有列來複制我們的結果:
讓我們更深入地研究我們的程式碼:我們指定了想要的rows 0:5。這意味著我們想要從position 0到(但不包括)position的行5。
第一行被認為是在位置0,所以選擇行0:5給了我們行的位置0,1,2,3,和4。我們也需要所有列,並且使用快捷方式來選擇它們。它的工作方式是這樣的:如果我們不喜歡第一個位置值,例如:5,那是假設我們的意思0。如果我們忽略了最後一個位置值(如)0:,則假定我們是指DataFrame中的最後一行或最後一列。我們需要所有列,因此只指定了一個冒號(:),沒有任何位置。這使我們的列從0到最後一列。以下是一些索引示例以及結果:
1)reviews.iloc[:5,:]—第一5行,以及這些行的所有列。
2)reviews.iloc[:,:] —整個DataFrame。
3)reviews.iloc[5:,5:]—從位置5開始的行,從位置開始的列5。
4)reviews.iloc[:,0] —第一列,以及該列的所有行。
5)reviews.iloc[9,:] —第十行,以及該行的所有列。
在Pandas中使用標籤在Python中建立索引
既然我們知道如何按位置檢索行和列,那麼值得研究使用DataFrames的另一種主要方法,即按標籤檢索行和列。與NumPy相比,Pandas的主要優勢在於,每一列和每一行都有一個標籤。可以處理列的位置,但是很難跟蹤哪個數字對應於哪個列。
我們可以使用pandas.DataFrame.loc方法處理標籤,該方法允許我們使用標籤而不是位置進行索引。我們可以reviews使用以下loc方法顯示前五行:
上面的內容實際上與並沒有太大的不同reviews.iloc[0:5,:]。這是因為儘管行標籤可以採用任何值,但我們的行標籤與位置完全匹配。您可以在上方表格的最左側看到行標籤(它們以粗體顯示)。您還可以透過訪問DataFrame 的index屬性來檢視它們。我們將顯示的行索引reviews:
reviews.index
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, ...], dtype="int64")
不過,索引不一定總是與位置匹配。在下面的程式碼單元中,我們將:
a.獲取行10至行20的reviews,並分配結果some_reviews。
b.顯示的第一5行some_reviews。
如上所示,在中some_reviews,行索引始於,10結束於20。因此,嘗試loc使用小於10或大於的數字20將導致錯誤:
some_reviews.loc[9:21,:]
如前所述,在使用資料時,列標籤可以使工作變得更加輕鬆。我們可以在loc方法中指定列標籤,以按標籤而不是按位置檢索列。
我們還可以透過傳入列表來一次指定多個列:
Pandas系列物件
我們可以通過幾種不同的方式在Pandas中檢索單個列。到目前為止,我們已經看到了兩種語法:
1)reviews.iloc[:,1] —將檢索第二列。
2)reviews.loc[:,"score_phrase"] —還將檢索第二列。
還有第三種甚至更容易的方法來檢索整列。我們可以在方括號中指定列名稱,例如使用字典:
我們還可以透過以下方法使用列列表:
當我們檢索單個列時,實際上是在檢索Pandas Series物件。DataFrame儲存表格資料,而Series儲存資料的單列或單行。
我們可以驗證單個列是否為系列:
我們可以手動建立系列以更好地瞭解其工作原理。要建立一個Series,我們在例項化它時將一個列表或NumPy陣列傳遞給Series物件:
系列可以包含任何型別的資料,包括混合型別。在這裡,我們建立一個包含字串物件的系列:
在Pandas中建立一個DataFrame
我們可以透過將多個Series傳遞到DataFrame類中來建立DataFrame。在這裡,我們傳入剛剛建立的兩個Series物件,
s1作為第一行,s2作為第二行:
我們還可以使用列表列表完成同樣的事情。每個內部列表在結果DataFrame中被視為一行:
我們可以在建立DataFrame時指定列標籤:
以及行標籤(索引):
還請注意,不需要縮排和單獨的行。我們已經以這種方式編寫了程式碼,以使其更易於解析,但是您經常會遇到將它們全部寫成一行的情況。例如,以下程式碼將產生與我們在本段上方的表中看到的結果完全相同的結果:
無論如何,新增標籤後,便可以使用它們對DataFrame進行索引:
columns如果將字典傳遞給DataFrame建構函式,則可以跳過指定關鍵字引數的操作。這將自動設定列名稱:
PandasDataFrame方法
如前所述,pandas DataFrame中的每一列都是Series物件:
我們可以在Series物件上呼叫與在DataFrame上可以呼叫的大多數相同的方法,包括head:
Pandas Series和DataFrames還具有其他使計算更簡單的方法。例如,我們可以使用pandas.Series.mean方法來查詢Series的均值:
我們還可以呼叫類似的pandas.DataFrame.mean方法,該方法預設情況下將查詢DataFrame中每個數字列的平均值:
我們可以修改axis關鍵字引數以mean計算每行或每列的平均值。預設情況下,axis等於0,並將計算每列的平均值。我們還可以將其設定1為計算每行的平均值。請注意,這隻會計算每行中數值的平均值:
reviews.mean(axis=1)
0 510.500
1 510.500
2 510.375
3 510.125
4 510.125
5 509.750
6 508.750
7 510.250
8 508.750
9 509.750
10 509.875
11 509.875
12 509.500
13 509.250
14 509.250
...
18610 510.250
18611 508.700
18612 509.200
18613 508.000
18614 515.050
18615 515.050
18616 508.375
18617 508.600
18618 515.025
18619 514.725
18620 514.650
18621 515.000
18622 513.950
18623 515.000
18624 515.000
Length: 18625, dtype: float64
Series和DataFrames上有很多類似的方法mean。這裡有一些方便的東西:
1)pandas.DataFrame.corr —查詢DataFrame中各列之間的相關性。
2)pandas.DataFrame.count —計算每個DataFrame列中非空值的數量。
3)pandas.DataFrame.max —在每一列中找到最大值。
4)pandas.DataFrame.min —查詢每一列中的最小值。
5)pandas.DataFrame.median —查詢每列的中位數。
6)pandas.DataFrame.std —查詢每列的標準偏差。
例如,我們可以使用該corr方法檢視是否有任何列與關聯score。這可以告訴我們最近釋出的遊戲獲得了更高的評價(release_year),還是在年底之前釋出的遊戲獲得了更好的評分(release_month):
DataFrame Math與Pandas
我們還可以使用pandas在Python中的Series或DataFrame物件上執行數學運算。例如,我們可以將score列中的每個值除以2以將刻度從0– 切換10到0– 5:
reviews["score"] / 2
0 4.50
1 4.50
2 4.25
3 4.25
4 4.25
5 3.50
6 1.50
7 4.50
8 1.50
9 3.50
10 3.75
11 3.75
12 3.50
13 4.50
14 4.50
...
18610 3.00
18611 2.90
18612 3.90
18613 4.00
18614 4.60
18615 4.60
18616 3.75
18617 4.20
18618 4.55
18619 3.95
18620 3.80
18621 4.50
18622 2.90
18623 5.00
18624 5.00
Name: score, Length: 18625, dtype: float64
所有常用的數學運算子在Python的工作,如+,-,*,/,和^將在系列或DataFrames大Pandas的工作,並且將適用於每一個元素在一個數據幀或一個系列。
Pandas中的布林索引
現在我們已經瞭解了一些Pandas的基礎知識,讓我們繼續進行分析。我們前面看到的,平均都在值的score列reviews左右7。如果我們想找到所有得分都高於平均水平的遊戲怎麼辦?
我們可以先進行比較。比較會將“系列”中的每個值與指定值進行比較,然後生成一個“系列”,其中包含表示比較狀態的布林值。使用Python Pandas分析影片遊戲資料https://www.aaa-cg.com.cn/data/2310.html例如,我們可以看到哪些行的score值大於7:
score_filter = reviews["score"] > 7
score_filter
0 True
1 True
2 True
3 True
4 True
5 False
6 False
7 True
8 False
9 False
10 True
11 True
12 False
13 True
14 True...
18610 False
18611 False
18612 True
18613 True
18614 True
18615 True
18616 True
18617 True
18618 True
18619 True
18620 True
18621 True
18622 False
18623 True
18624 True
Name: score, Length: 18625, dtype: bool
有了布林系列後,我們可以使用它來選擇DataFrame中該系列包含value的行True。所以,我們只能選擇行reviews,其中score大於7:
可以使用多個條件進行過濾。假設我們要查詢針對發行Xbox One的得分超過的遊戲7。在下面的程式碼中,我們:
a.設定兩個條件的過濾器:
1)檢查是否score大於7。
2)檢查是否platform相等Xbox One
b.應用過濾器以reviews僅獲取所需的行。
c.使用head方法列印的第一5行filtered_reviews。
在使用多個條件進行過濾時,將每個條件放在括號中並用一個&符號(&)分隔是很重要的。
Pandas圖
現在我們知道如何過濾,我們可以建立圖以觀察的回顧分佈Xbox One與的回顧分佈PlayStation 4。這將幫助我們確定哪個控制檯具有更好的遊戲。
我們可以透過直方圖來做到這一點,該直方圖將繪製不同得分範圍內的頻率。我們可以使用pandas.DataFrame.plot方法為每個控制檯製作一個直方圖。該方法利用幕後的流行Python繪相簿matplotlib生成美觀的繪圖。
該plot方法預設為繪製折線圖。我們需要傳入關鍵字引數kind="hist"來繪製直方圖。在下面的程式碼中,我們:
a.致電%matplotlib inline以在Jupyter筆記本中設定繪圖。
b.過濾reviews以僅包含有關的資料Xbox One。
c.繪製score列。
我們也可以對PS4:
從我們的直方圖中可以看出,與相比,PlayStation 4具有更高評級的遊戲Xbox One。
顯然,這只是冰山一角,涉及到我們可以用來分析該資料集的潛在方向,但我們已經有了一個很好的開端:我們已經使用Python和pandas匯入了資料集,並學會了使用各種不同的索引方法選擇我們想要的資料點,並進行了一些快速的探索性資料分析,以回答我們開始時遇到的問題。
https://www.toutiao.com/i6832518344541733380/
-
3 # 軟體測試開發技術棧
Windows下如何安裝Python、Pandas非常簡單,透過安裝Anaconda 就可以完成Python、Pandas的安裝。接下來介紹一下 Anaconda 的安裝方法。
Python是一種面向物件的解釋型計算機程式設計語言,可以在Windows、Linux、macOS系統中搭建環境並使用。其強大之處在於它的應用領域範圍遍及人工智慧、科學計算、大資料及雲計算、Web開發、系統運維、遊戲開發等。透過Anaconda安裝PythonAnaconda指的是一個開源的 Python 發行版本,其包含了conda、Pandas、NumPy、Scipy等180多個科學包及其依賴項。
在Windows系統中安裝Anaconda
Anaconda 官網下載地址 https://www.continuum.io/downloads
建議選擇安裝Python 3.7版本,完成下載之後,雙擊下載檔案,啟動安裝程式,安裝過程注意以下幾點注意:
如上,選擇“Just Me(recommended)”安裝,如果在安裝時選擇了“為所有使用者安裝”,則解除安裝Anaconda然後重新安裝。
如上,安裝路徑中不能含有空格,也不能含中文(“unicode”編碼)。
如上,在“Advanced Options”中不要勾選“Add Anaconda to my PATH environment variable.”(新增Anaconda至我的環境變數)。因為如果勾選,可能會影響其他程式的使用。
如上,如果使用Anaconda安裝或者更新第三方庫,則透過開啟Anaconda Navigator或者在開始選單中的“Anaconda Powershell Prompt”(類似Windows中的“CMD終端”)中進行操作。
使用整合開發環境Pycharm編寫Python程式碼PyCharm是一種Python IDE,帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如除錯、語法高亮、Project管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高階功能,以用於支援Django框架下的專業Web開發。PyCharm 的下載地址
http://www.jetbrains.com/pycharm/download/#section=windows完成下載之後,雙擊下載檔案,啟動安裝程式,安裝過程非常簡單,此處不做說明。
使用Pycharm安裝、更新第三方庫
美好的開始,import pandas as pd以下例項是我們使用pandas 載入csv檔案,結果如下:
回覆列表
下載anaconda,官網下載很慢,去清華映象下載,下載完之後安裝。裝好anaconda就裝好了python,python編輯器,jupyter notebook等好用的工具。之後開啟anaconda的命令工具軟體,輸入conda list檢視已經安裝好的包,一般常用的包都已經幫你裝好了,不用自己裝,如果要裝一些包,例如pandas,那麼輸入conda install pandas就可以安裝了。