Python數據分析之Pandas庫(筆記)

Pandas數據結構

pandas有兩個基本的數據結構:Series和DataFrame。
1.1 建立Series數據
須要引入pandas模塊:import pandas as pd
須要引入Series和DataFrame: from pandas import Series,DataFrame
Python數據分析之Pandas庫(筆記)
Series數據:索引在左,值在右
Series有values和index屬性,可返還值數據的數據形式和索引對象
Series具備索引對象,可經過其獲取Series的單個或者一組值
Python數據分析之Pandas庫(筆記)
Series運算都會保留索引和值之間的連接
Series數組中的索引和值一一對應,相似於Python字典數據,因此也能夠經過字典數據來建立Series
Series對象和索引都有name屬性,這樣咱們就能夠給Series定義名稱,讓Series更具可讀性
Python數據分析之Pandas庫(筆記)
1.2 建立DataFrame數據
DataFrame數據有行索引和列索引,行索引相似於Excel表格中每行的編號(沒有指定索引的狀況下),列索引相似於Excel表格的列名(一般也可稱爲字段)
Python數據分析之Pandas庫(筆記)
因爲字典是無序的,所以能夠經過columns指定列索引的排列順序
當沒有指定行索引的狀況下,會使用0到N-1(N爲數據的長度)做爲行索引,這裏也可使用其餘數據做爲行索引。
經過values屬性能夠將DataFrame數據轉換爲二維數組。數組

Python數據分析之Pandas庫(筆記)
下表中提供了部分經常使用的爲建立DataFrame數據可傳入的數據類型。
Python數據分析之Pandas庫(筆記)
1.3 索引對象
Series的索引和DataFrame的行和列索引都是索引對象,用於負責管理軸標籤和元數據。
索引對象是不能夠進行修改的,若是修改就會報錯
Python數據分析之Pandas庫(筆記)數據結構

2、pandas索引操做
2.1 從新索引
從新索引並非給索引從新命名,而是對索引從新排序,若是某個索引值不存在的話,就會引入缺失值(NaN)。
對於DataFrame數據來講,行和列索引都是能夠從新索引的。
Python數據分析之Pandas庫(筆記)
須要對插入的缺失值進行填充的話,可經過method參數來實現,參數值爲ffill或pad時爲向前填充,參數值爲bfill或backfill時爲向後填充。
Python數據分析之Pandas庫(筆記)
reindex函數的各參數使用說明
Python數據分析之Pandas庫(筆記)
2.2 更換索引
在DataFrame數據中,若是不 但願使用默認行索引的話,可 在建立的時候經過index參數來 設置行索引。有時咱們但願將 列數據做爲行索引,這時能夠 經過set_index方法來實現
與set_index方法相反的方法是reset_index(恢復索引)方法
Python數據分析之Pandas庫(筆記)
對DataFrame數據,排序以後其行索引會改變
Python數據分析之Pandas庫(筆記)
2.3 索引和選取
注意:若是是利用索引標籤切片,其尾端是被包含的。
一、 選取列app

注意:選取列不能使用切片,由於切片用於選取行數據

Python數據分析之Pandas庫(筆記)
二、選取行
Python數據分析之Pandas庫(筆記)
注意:獲取單獨的幾行,經過loc和iloc方法能夠實現。loc方法是按行索引標籤選取數據;iloc方法是按行索引位置選取數據
Python數據分析之Pandas庫(筆記)
三、選取行和列
注意:ix方法同時支持索引標籤和索引位置來進行行數據的選取,新版的Python中,ix已被廢棄,用ix選取行列的方式能夠用以下代碼代替
Python數據分析之Pandas庫(筆記)
四、布爾選擇
篩選出性別爲female的數據,這時就須要經過布爾選擇來完成。
一樣也適用於不等於符號(!=)、負號(-)、和(&)、或(|)。
Python數據分析之Pandas庫(筆記)
2.四、操做行和列
一、增長 經過append函數傳入字典結構數據便可
Python數據分析之Pandas庫(筆記)
爲一個不存在的列賦值,便可建立一個新列
Python數據分析之Pandas庫(筆記)
二、經過drop方法能夠刪除指定軸上的信息
Python數據分析之Pandas庫(筆記)
三、經過rename函數,可完成因爲某些緣由致使的標籤錄入錯誤的問題
Python數據分析之Pandas庫(筆記)ide

3、pandas數據運算
3.一、算數運算
pandas的數據對象在進行算術運算時,若是有相同索引對則進行算術運算,若是沒有則會引入缺失值,這就是數據對齊
一、Series數據算術運算
Python數據分析之Pandas庫(筆記)
二、DataFrame數據算術運算
Python數據分析之Pandas庫(筆記)
三、DataFrame和Series數據在進行運算時,先經過Series的索引匹配到相應的DataFrame列索引上,而後沿行向下運算(廣播)。
Python數據分析之Pandas庫(筆記)
3.二、函數應用和映射
map函數,將函數套用在Series的每一個元素中;
apply函數,將函數套用到DataFrame的行與列上;
applymap函數,將函數套用到DataFrame的每一個元素上
一、 須要把price列的「元」字去掉,這時就須要用到map函數
Python數據分析之Pandas庫(筆記)
二、apply函數
注意:lambda爲匿名函數,和定義好的函數同樣,能夠節省代碼量
Python數據分析之Pandas庫(筆記)
三、applymap函數可做用於每一個元素,便於對整個DataFrame數據進行批量處理
Python數據分析之Pandas庫(筆記)
3.三、排序
一、經過sort_index函數可對索引進行排序,默認狀況爲升序
Python數據分析之Pandas庫(筆記)
二、經過sort_values方法可對值進行排序
Python數據分析之Pandas庫(筆記)
pandas排序函數sort_values: pandas中的sort_values()函數原理相似於SQL中的order by,能夠將數據 集依照某個字段中的數據進行排序,該函數便可根據指定列數據也可根據指定 行的數據排序。用法以下: DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
Python數據分析之Pandas庫(筆記)
3.四、彙總與統計
在DataFrame數據中,經過sum函數能夠對每列進行求和彙總
指定軸方向,經過sum函數可按行彙總
Python數據分析之Pandas庫(筆記)
describe方法可對每一個數值型列進行統計,常常用於對數據的初步觀察時使用函數

count爲總數

mean爲算數平均數

std爲標準差

min爲最小值

25%, 50%和75%是對應的四分位數

max爲最大值

Python數據分析之Pandas庫(筆記)
3.五、惟一值和值計數
在Series中,經過unique函數能夠獲取不重複的數組。經過values_counts方法可統計每一個值出現的次數。
注意:對於DataFrame的列而言,unique函數和value_counts方法一樣適用
Python數據分析之Pandas庫(筆記)3d

4、層次化索引
4.一、層次化索引簡介
層次化索引就是軸上有多個級別索引
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)
4.二、重排分級順序
經過swaplevel方法能夠對層次化索引進行重排。
Python數據分析之Pandas庫(筆記)
4.三、彙總統計
在對層次化索引的pandas數據進行彙總統計時,能夠經過level參數指定在某層次上進行彙總統計
Python數據分析之Pandas庫(筆記)
5、 pandas可視化
5.一、線形圖
Pandas庫中的Series和DataFrame中都會有繪製各種圖表的plot方法, 默認狀況繪製的是線形圖。
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib as mpl
import matplotlib.pyplot as plt # 導入matplotlib庫
%matplotlib inline
注意: %matplotlib inline爲魔法函數,使用該函數繪製的圖片會直接顯示在Notebook中。
建立一個Series對象
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)
創 建 DataFrame數據。
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)對象

5.二、柱狀圖
柱狀圖常描繪各種別之間的關係
經過pandas繪製柱狀圖,只須要在plot函數中加入kind=‘bar’,若是類別較多,可繪製水平柱狀圖(kind=‘barh’)
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)
設置plot函數的stacked參數,能夠繪製堆積柱狀圖。
說明:plot函數的alpha參數可設置顏色透明度。
Python數據分析之Pandas庫(筆記)
5.三、直方圖和密度圖
直方圖用於頻率分佈,y軸可爲數值或 者比率。直方圖在統計分析中是常常使 用的,繪製數據的直方圖,能夠看出其 大概分佈規律。
經過hist方法繪製直方圖
注意:經過設置grid參數可在圖表中添加網格 ;bins參數是將值分爲多少段,默認爲10。
Python數據分析之Pandas庫(筆記)
核密度估計(Kernel Density Estimate,KDE)是對真實密度的 估計,其過程是將數據的分佈近似爲一組核(如正態分佈)。
通 過plot函數的kind=‘kde’可進行繪製。
Python數據分析之Pandas庫(筆記)
5.四、散點圖
散點圖主要用來表現數據之間的規律。
繪製散點圖,kind='scatter'
Python數據分析之Pandas庫(筆記)
小總結:
一、plot方法默認狀況,繪製的是線形圖;
二、增長參數kind=’bar’或kind=’barh’繪製柱狀圖或水平柱狀圖,設置plot的stacked參數能夠繪製堆積柱狀圖;
三、當kind=’kde’能夠繪製KDE圖,即密度圖;
四、當kind=’scatter’能夠繪製散點圖;
五、還有一個特殊的直方圖,使用的是hist方法。blog

6、綜合示例—小費數據集
數據分析的流程一般狀況下分爲5步。
(1)收集數據。在這一步中,須要對收集的數據有必定的認知,對各字段的 含義和背景知識都要有着足夠的理解。
(2)定義問題。根據各自的行業和業務知識,對數據定義多個待解決的問題 。
(3)數據清洗與整理。因爲各類問題,獲取的數據不夠「乾淨」 ,需經過各 種手段對數據進行清洗與整理,以便獲得準確的分析結果。
(4)數據探索。經過可視化等手段,對數據進行分析和探索,得出結論。
(5)數據展現。這部分用於輸出,或撰寫數據分析報告、或彙報給上級、或 繪製PPT
舉例:
小費數據集來源於Python第三方庫seaborn(用於繪圖)中自帶 的數據,加載該數據集
Python數據分析之Pandas庫(筆記)
注意:head函數會返回前5條數據,也可指定返回數據行數。
一、數據來源:
該小費數據爲餐飲行業收集的數據。total_bill列爲消費總金額; tip列爲小費金額;sex列爲顧客性別;smoker列爲顧客是否抽 煙;day列爲小費的星期;time列爲聚餐的時間段;size列爲聚 餐人數。
二、定義問題
小費金額與消費總 金額是否存在相關性?性別、是否吸菸、星期幾、中/晚餐、聚 餐人數和小費金額是否有必定的關聯?小費金額佔消費總金額的 百分比服從正態分佈?
三、數據清洗
首先對數據進行簡單描述,看是否有缺失值或者異常值以及經過打印數據的info信息能夠看出每列數據的類型 和缺失值
Python數據分析之Pandas庫(筆記)
四、數據探索
分析小費金額和消費總金額是否有關聯?
首先對小費金額與消費總金額進行分析,看看它們之間是否有關 聯,經過下面代碼繪製散點圖。
Python數據分析之Pandas庫(筆記)
經過上圖能夠看出,小費金額與消費總金額存在着正相關的關係 ,即小費的金額越多,給的消費也就越多。
分析性別是否和小費金額有必定的關聯?
咱們再來看看性別不同是否影響小費的金額。這裏使用柱狀圖 ,經過布爾選擇男女性別,對小費數據進行平均後繪製柱狀圖
Python數據分析之Pandas庫(筆記)
從柱狀圖中能夠看出,女性小費金額少於男性小費金額。
分析日期(星期)是否和小費金額有必定的關聯?
日期與小費的關 系,因爲觀察數據時只看到了前5行數據,經過unique函數看下 日期的惟一值有哪些。
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)
從柱狀圖中能夠看出,周6、週日的小費比周4、週五 的小費高。
分析聚餐人數是否和小費金額有必定的關聯?
Python數據分析之Pandas庫(筆記)
Python數據分析之Pandas庫(筆記)
從柱狀圖中能夠看出,聚餐人數越多,小費金額越高排序

相關文章
相關標籤/搜索