Python三方庫:Pandas(數據分析)

Pandas是一個基於Numpy的數據分析包,這個庫就是爲數據分析而生的,你能夠像操做Excel同樣操做Pandas,實現數據的選擇排序、篩選過濾、統計分析等功能,實際上,Pandas就是Python中的Excel,在學習Pandas以後你會更加深入的理解這句話是多麼的形象準確的。數組

爲了簡化表示,本文示例中的pd表示pandas庫,即import pandas as pd。數據結構

 

1、基礎數據結構DataFrame和Seriesapp

Pandas中最基礎的數據結構就是DataFrame和Series,從數組的角度理解,能夠將DataFrame看做是二維數組,將Series看做是一維數組,固然,最直觀的理解就是DataFrame是一個Excel表格,由行索引、列名和數據(二維數組)組成,而Series是則表中的一列數據,只有行索引和數據(一維數組)兩部分。學習

1. 建立DataFrame和Seriesspa

一個DataFrame能夠看做是由行索引、列名及數據(二維數組)三部分構成,對於行索引,在Pandas中的處理是比較特殊的,好比有n行數據,默認狀況下,行索引會是咱們熟悉的從0到n-1的索引號,可是咱們也能夠本身指定每一行的行索引,或者說是行標籤,經過行標籤一樣也能取到對應行的數據。固然,列名若是沒有指定,一樣是0到n-1的序號。3d

經過列表建立DataFrame:對象

經過字典建立DataFrame:blog

經過文件建立DataFrame:排序

csv文件數據索引

代碼示例

 

經過列表建立Series:

 

2. 查看DataFrame和Series

DataFrame和Series對象有許多快速查看自身信息的屬性和方法,由於Series的許多屬性和方法與DataFrame都是類似的,因此這裏就只列一些DataFrame中比較經常使用的:

  • DataFame.columns:表格的列名。
  • DataFame.dtypes:列的數據類型。
  • DataFame.index:表格的行索引。
  • DataFame.size:表格中的元素個數。
  • DataFame.values:表格中的數據,返回的是一個二維數組對象。
  • DataFame.head(n):默認展現表格前5行數據,也能夠指定展現前n行數據。
  • DataFame.tail(n):默認展現表格末尾5行數據,也能夠指定展現默認n行數據。
  • DataFame.info():查看錶格的一個簡單彙總信息,包括有多少行、有多少列、每列的數據類型等信息。

簡單示例:

 

2、索引操做

這裏說的索引指的是行索引或者說行標籤,Pandas中關於行索引有許多巧妙且實用的用法,能幫助咱們更好的進行數據分析,具體見示例代碼。

對於索引的使用,便可以像Numpy中那樣去操做Pandas中的索引,也可使用iloc()方法和loc()方法去操做索引,區別在於iloc()方法只能用於原始的0到n-1索引,而loc()方法能夠將本身指定的行標籤像索引同樣去操做,具體見示例代碼。

 

3、經常使用方法

由於Pandas的核心是Numpy庫,因此Numpy中的一些特點用法在Pandas中也是可使用的,好比經過算術運算符實現對每一個元素的加減乘除等操做,以及使用max、mean等統計方法在Pandas中也都是支持的。

如下列舉一些DataFrame和Series的經常使用操做和方法(具體的參數使用請參考對應的幫助文檔或官方API文檔),爲了簡化表示,df表明DataFrame對象,s表明Series對象,具體使用效果見示例代碼。

  • [df/s]+3:就像Numpy中的數組操做同樣,表示對錶格中的每一個元素進行加法運算,固然,其餘的算術運算也是能夠的。(這裏的3只是舉例用的數字)
  • [df/s].max():返回表格中各列的最大值。
  • [df/s].min():返回表格中各列的最小值。
  • [df/s].mean():返回表格中各列的平均值。
  • [df/s].replace(to_replace=None, value=None):將表格中的to_replace替換爲value。
  • [df/s].append(other):將一個表格追加到另外一個表格中,並返回一個合併以後的新表格。
  • [df/s].drop(labels=None, axis=0, index=None, columns=None):刪除指定內容。
  • [df/s].drop_duplicates():刪除重複值,可使用subset參數刪除指定列的重複值。
  • [df/s].isnull():判斷表格是否爲空。
  • [df/s].fillna(value):將空值填充爲指定值。
  • pd.cut(x, bins, labels=None):按照bins參數給數組x分段,若是x是一個具體的數字,則會將數組平均分紅x段,若是x是一個列表,則按照列表表示的區間來分段,同時可使用labels參數給每一個區間指定一個label。
  • df.describe():將表格中數據類型爲數字的元素篩選出來,而後按列進行一些簡單的統計。
  • df.cov():計算斜方差。
  • df.corr():計算相關係數,計算結果在[-1, 1]之間,1表示二者的變化趨勢是相同的,-1則表示變化趨勢是相反的,0則表示變化趨勢徹底不相關。
  • df.copy()或s.copy():返回一個表格的副本。
  • df.sort_values(by, ascending=True):按照by參數指定的列進行排序,可使用ascending參數指定以升序排序。
  • s > 3:返回列中每一個元素的條件判斷結果(即布爾索引),用法和Numpy同樣。(這裏的3只是舉例用的數字)
  • s.value_counts(ascending=False, bins=None):對列中的每一個值進行個數統計,可使用ascending參數指定統計結果以升序排列,使用bins參數讓統計結果分段顯示。
  • s.str.lower():轉化爲小寫。
  • s.str.upper():轉化爲大寫。
  • s.str.len():返回字符串的長度。
  • s.str.strip():去除兩邊空白內容,其餘相似功能還有lstrip()和rstrip()。
  • s.str.replace(pat, repl):將字符串中的pat替換爲repl。
  • s.str.split(pat=None, expand=False):將字符串根據pat分隔,返回一個DataFrame對象,若是指定expand爲True,會將DataFrame「拉直」變爲一個Series對象。
  • s.str.contains(pat):判斷是否包含指定值pat。
  • s.str.get_dummies(sep='|'):指定分隔符,並返回一個DataFrame對象,這個方法經常使用於關聯分析。

 

4、SQL功能

Pandas中有一些方法能實現像SQL同樣的功能,如groupby方法能夠實現SQL中的分組功能,merge方法能夠實現SQL中的錶鏈接功能,具體見示例代碼。

 

5、透視表

所謂透視表,就是使用pivot()方法或pivot_table()方法從本來的表格中抽取三列內容並將其轉換爲另外一個表格,以便更直觀、更方便地去觀察和分析這三列數據,具體效果看了示例就明白了。

 

6、時間處理

Pandas中有一套本身的時間字符串處理方法,並且使用起來也很方便,如pd.Timestamp()能夠將字符串轉換爲時間戳,pd.Timedelta()能夠進行時間的加減運算,pd.to_datetime()能夠將字符串轉換爲日期。若是遇到了時間格式字符串,建議優先考慮Pandas自帶的時間處理方式。

 

7、批量處理map和apply

若是想要對錶格中某行或某列的全部元素執行同一個操做,可使用map()方法, 而想要對錶格中全部行或全部列都執行同一個操做,則可使用apply()方法。

相關文章
相關標籤/搜索