pandas 每一列相加_Python数据分析——Pandas 教程(上)
Python 在數(shù)據(jù)分析領(lǐng)域里是一門非常強(qiáng)大的語(yǔ)言,在數(shù)據(jù)分析方面有著出色的生態(tài)系統(tǒng)。Pandas 包就是其中之一,它的主要特點(diǎn)是導(dǎo)入和分析數(shù)據(jù)非常的容易,Pandas 類似 Numpy、Matplotlib,提供了單一且方便的方式來(lái)處理數(shù)據(jù)分析和形象化的工作。
本文中,我們使用 Pandas 來(lái)分析 IGN(www.ign.com) 上的游戲評(píng)論數(shù)據(jù),IGN 是一個(gè)頗受歡迎的游戲評(píng)論網(wǎng)站。相關(guān)數(shù)據(jù)可以從這里(https://www.kaggle.com/egrinstein/20-years-of-games)獲取到,也可以通過(guò)我的 Github 獲取(https://raw.githubusercontent.com/keer2345/DataAnalysisWithPython/master/myself-notebook/dataquest.io/ign.csv)。通過(guò)分析評(píng)論數(shù)據(jù),我們將學(xué)到類似索引等 Pandas 關(guān)鍵的方面。
比如類似巫師3(Witcher3)這款游戲,在 PS4 上的評(píng)論會(huì)比 Xbox One 上更多嗎?數(shù)據(jù)集能幫我們給出結(jié)果。
使用Pandas導(dǎo)入數(shù)據(jù)
首先,我們先查看數(shù)據(jù)。數(shù)據(jù)以逗號(hào)分隔符來(lái)存儲(chǔ),或者 csv 文件,每一行通過(guò)換行來(lái)分隔,每一列以逗號(hào),來(lái)分隔,下面是 ign.csv 文件的前面幾行:
,score_phrase,title,url,platform,score,genre,editors_choice,release_year,release_month,release_day0,Amazing,LittleBigPlanet PS Vita,/games/littlebigplanet-vita/vita-98907,PlayStation Vita,9.0,Platformer,Y,2012,9,121,Amazing,LittleBigPlanet PS Vita -- Marvel Super Hero Edition,/games/littlebigplanet-ps-vita-marvel-super-hero-edition/vita-20027059,PlayStation Vita,9.0,Platformer,Y,2012,9,122,Great,Splice: Tree of Life,/games/splice/ipad-141070,iPad,8.5,Puzzle,N,2012,9,123,Great,NHL 13,/games/nhl-13/xbox-360-128182,Xbox 360,8.5,Sports,N,2012,9,11正如我們看到的,每一行代表游戲的一個(gè) IGN 評(píng)論。每一列的含義如下:
- score_phrase: IGN 評(píng)論的唯一值
- title: 游戲名稱
- url: 通過(guò) URL 可以看到詳細(xì)評(píng)論
- platform: 通過(guò)何種平臺(tái)評(píng)論游戲(PC, PS4, etc)
- score: 評(píng)分,從 1.0 ~ 10.0
- genre: 游戲種類
- editors_choice: 如果游戲并非通過(guò)選擇打分的為 N,否則為 Y
- release_year: 游戲發(fā)布年份
- release_month: 游戲發(fā)布月份
- release_day:游戲發(fā)布日期
數(shù)據(jù)里還有一列包含索引值,到后面深入索引數(shù)據(jù)之前我們可以忽略這一列。我們通過(guò) Pandas DataFrame 加載數(shù)據(jù),DataFrame 是一種處理表格數(shù)據(jù)的方式,表格數(shù)據(jù)擁有行和列,類似上面的 csv 文件。
為了讀取數(shù)據(jù),我們使用 pandas.read_csv 函數(shù)。該函數(shù)能返回 csv 文件的 DataFrame:
- 導(dǎo)入 pandas 庫(kù),并習(xí)慣性的重命名為 pd,以便能以后能快速地調(diào)用它。
- 讀取 ign.csv 文件到 DataFrame,并賦值給 reviews。
獲取完數(shù)據(jù)后,Pandas 提供了兩個(gè)方法來(lái)快速打印數(shù)據(jù):
- pandas.DataFrame.head:打印 DataFrame 的前 N 行,默認(rèn)值為 5
- pandas.DataFrame.tail:打印 DataFrame 的后 N 行,默認(rèn)值為 5
我們還可以通過(guò) pandas.DataFrame.shape 屬性來(lái)查看行數(shù)和列數(shù):
reviews.shape(18625, 11)通過(guò)結(jié)果可以看到,我們的數(shù)據(jù)有 18625 行,11 列。
Pandas 對(duì)比 Numpy 的一大優(yōu)勢(shì)就是 Pandas 允許我們可以有不同數(shù)據(jù)類型的列。reviews 有的類似 store 的 float 列;有的類似 score_phrase 的 string 列;有的類似 release_year 的 integer 列。
現(xiàn)在,讓我們通過(guò)索引 reviews 來(lái)獲取想要的行和列。
使用Pandas索引DataFrames
前面我們使用 head 方法來(lái)打印前 5 行數(shù)據(jù),我們可以使用 pandas.DataFrame.iloc 來(lái)實(shí)現(xiàn)同樣的功能。iloc 方法允許我們檢索行和列的位置:
正如我們所看到的,指定了想要的行數(shù) 0:5,意思是位置從 0 行開始的 5 行,即 0, 1, 2, 3, 4。這種情況下,也可以簡(jiǎn)寫為 :5。
我們使用 : 來(lái)指定列的位置,表示獲取所有列。
下面是一些索引(indexing)的例子:
- reviews.iloc[:5, :]:前5行、所有列
- reviews.iloc[:, :]:所有數(shù)據(jù)
- reviews.iloc[5:, 5:]:第5行和第5列之后的數(shù)據(jù)
- reviews.iloc[:, 0]:所有行的第一列數(shù)據(jù)
- reviews.iloc[9, :]:第10行數(shù)據(jù)
通過(guò)位置來(lái)索引與 Numpy 索引很相似。
現(xiàn)在,讓我們移除沒(méi)什么意義的第一列:
在Pandas中使用標(biāo)簽來(lái)檢索
我們已經(jīng)知道如何通過(guò)行和列的位置來(lái)檢索數(shù)據(jù),現(xiàn)在我們通過(guò) DataFrame 的其他主要的方法來(lái)檢索數(shù)據(jù),就是通過(guò)航和咧的標(biāo)簽來(lái)檢索。
Pandas 優(yōu)于 Numpy 的其中一點(diǎn)是 Pandas 的行和列都有標(biāo)簽,通過(guò)列的位置當(dāng)然可以檢索,但是這很難跟蹤哪些數(shù)字對(duì)應(yīng)哪些列。我們通過(guò) pandas.DataFrame.loc 方法來(lái)使用標(biāo)簽,允許我們通過(guò)標(biāo)簽替代位置來(lái)檢索數(shù)據(jù)。
我們使用 loc 瀏覽前五行數(shù)據(jù):
這個(gè)例子與 reviews.iloc[0:5, :] 看起來(lái)沒(méi)有什么區(qū)別,是因?yàn)槲覀兊男袠?biāo)簽匹配了位置值。我們可以看到行標(biāo)簽在表格的左邊,也可以看出來(lái)它們通過(guò) DataFrame 索引屬性訪問(wèn)。我們展示數(shù)據(jù)的行索引:
索引并不一定與位置匹配,比如下面的代碼:
- 獲取數(shù)據(jù)的 10 ~ 20 行,并賦值為 some_reviews
- 瀏覽 some_reviews 的前 5 行
可以看見,在 some_reviews 中,行索引從 10 到 20,因此,loc 標(biāo)簽檢索的數(shù)字必須是從 10 到 20。
正如前面提到的,列標(biāo)簽可以很容易的找到數(shù)據(jù),我們使用 loc 方法通過(guò)列標(biāo)簽替代位置索引檢索數(shù)據(jù):
我們也可以一次通過(guò)列表形式指定多個(gè)列標(biāo)簽:
上半部分小結(jié)
上半部分的文章,我們主要了解了 Pandas 如何加載數(shù)據(jù),以及 Pandas 通過(guò)位置或者標(biāo)簽檢索數(shù)據(jù)的方便快捷的特性。我們將在后面的文章繼續(xù)學(xué)習(xí) Pandas,學(xué)習(xí)它更多的特性。
總結(jié)
以上是生活随笔為你收集整理的pandas 每一列相加_Python数据分析——Pandas 教程(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: clickhouse hadoop_大数
- 下一篇: cv2 画多边形不填充_你不知道的4种方