pandas 每一列相加_Python数据分析——Pandas 教程(上)
Python 在數據分析領域里是一門非常強大的語言,在數據分析方面有著出色的生態系統。Pandas 包就是其中之一,它的主要特點是導入和分析數據非常的容易,Pandas 類似 Numpy、Matplotlib,提供了單一且方便的方式來處理數據分析和形象化的工作。
本文中,我們使用 Pandas 來分析 IGN(www.ign.com) 上的游戲評論數據,IGN 是一個頗受歡迎的游戲評論網站。相關數據可以從這里(https://www.kaggle.com/egrinstein/20-years-of-games)獲取到,也可以通過我的 Github 獲取(https://raw.githubusercontent.com/keer2345/DataAnalysisWithPython/master/myself-notebook/dataquest.io/ign.csv)。通過分析評論數據,我們將學到類似索引等 Pandas 關鍵的方面。
比如類似巫師3(Witcher3)這款游戲,在 PS4 上的評論會比 Xbox One 上更多嗎?數據集能幫我們給出結果。
使用Pandas導入數據
首先,我們先查看數據。數據以逗號分隔符來存儲,或者 csv 文件,每一行通過換行來分隔,每一列以逗號,來分隔,下面是 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正如我們看到的,每一行代表游戲的一個 IGN 評論。每一列的含義如下:
- score_phrase: IGN 評論的唯一值
- title: 游戲名稱
- url: 通過 URL 可以看到詳細評論
- platform: 通過何種平臺評論游戲(PC, PS4, etc)
- score: 評分,從 1.0 ~ 10.0
- genre: 游戲種類
- editors_choice: 如果游戲并非通過選擇打分的為 N,否則為 Y
- release_year: 游戲發布年份
- release_month: 游戲發布月份
- release_day:游戲發布日期
數據里還有一列包含索引值,到后面深入索引數據之前我們可以忽略這一列。我們通過 Pandas DataFrame 加載數據,DataFrame 是一種處理表格數據的方式,表格數據擁有行和列,類似上面的 csv 文件。
為了讀取數據,我們使用 pandas.read_csv 函數。該函數能返回 csv 文件的 DataFrame:
- 導入 pandas 庫,并習慣性的重命名為 pd,以便能以后能快速地調用它。
- 讀取 ign.csv 文件到 DataFrame,并賦值給 reviews。
獲取完數據后,Pandas 提供了兩個方法來快速打印數據:
- pandas.DataFrame.head:打印 DataFrame 的前 N 行,默認值為 5
- pandas.DataFrame.tail:打印 DataFrame 的后 N 行,默認值為 5
我們還可以通過 pandas.DataFrame.shape 屬性來查看行數和列數:
reviews.shape(18625, 11)通過結果可以看到,我們的數據有 18625 行,11 列。
Pandas 對比 Numpy 的一大優勢就是 Pandas 允許我們可以有不同數據類型的列。reviews 有的類似 store 的 float 列;有的類似 score_phrase 的 string 列;有的類似 release_year 的 integer 列。
現在,讓我們通過索引 reviews 來獲取想要的行和列。
使用Pandas索引DataFrames
前面我們使用 head 方法來打印前 5 行數據,我們可以使用 pandas.DataFrame.iloc 來實現同樣的功能。iloc 方法允許我們檢索行和列的位置:
正如我們所看到的,指定了想要的行數 0:5,意思是位置從 0 行開始的 5 行,即 0, 1, 2, 3, 4。這種情況下,也可以簡寫為 :5。
我們使用 : 來指定列的位置,表示獲取所有列。
下面是一些索引(indexing)的例子:
- reviews.iloc[:5, :]:前5行、所有列
- reviews.iloc[:, :]:所有數據
- reviews.iloc[5:, 5:]:第5行和第5列之后的數據
- reviews.iloc[:, 0]:所有行的第一列數據
- reviews.iloc[9, :]:第10行數據
通過位置來索引與 Numpy 索引很相似。
現在,讓我們移除沒什么意義的第一列:
在Pandas中使用標簽來檢索
我們已經知道如何通過行和列的位置來檢索數據,現在我們通過 DataFrame 的其他主要的方法來檢索數據,就是通過航和咧的標簽來檢索。
Pandas 優于 Numpy 的其中一點是 Pandas 的行和列都有標簽,通過列的位置當然可以檢索,但是這很難跟蹤哪些數字對應哪些列。我們通過 pandas.DataFrame.loc 方法來使用標簽,允許我們通過標簽替代位置來檢索數據。
我們使用 loc 瀏覽前五行數據:
這個例子與 reviews.iloc[0:5, :] 看起來沒有什么區別,是因為我們的行標簽匹配了位置值。我們可以看到行標簽在表格的左邊,也可以看出來它們通過 DataFrame 索引屬性訪問。我們展示數據的行索引:
索引并不一定與位置匹配,比如下面的代碼:
- 獲取數據的 10 ~ 20 行,并賦值為 some_reviews
- 瀏覽 some_reviews 的前 5 行
可以看見,在 some_reviews 中,行索引從 10 到 20,因此,loc 標簽檢索的數字必須是從 10 到 20。
正如前面提到的,列標簽可以很容易的找到數據,我們使用 loc 方法通過列標簽替代位置索引檢索數據:
我們也可以一次通過列表形式指定多個列標簽:
上半部分小結
上半部分的文章,我們主要了解了 Pandas 如何加載數據,以及 Pandas 通過位置或者標簽檢索數據的方便快捷的特性。我們將在后面的文章繼續學習 Pandas,學習它更多的特性。
總結
以上是生活随笔為你收集整理的pandas 每一列相加_Python数据分析——Pandas 教程(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: clickhouse hadoop_大数
- 下一篇: 原生JS实现表单序列化serialize