利用numpy和pandas進行一維和二維數據分析。
本文要點:numpy、pandas和matplolib是數據分析領域最常見的三個包。其中numpy是python中應用於數學計算的模塊,pandas是基於numpy的數據分析工具。這篇文章介紹了numpy和pandas的基礎知識。
1.一維數據分析
首先導入numpy和pandas
#導入numpy包import numpy as np#導入pandas包import pandas as pd
Numpy
numpy的一維數據結構叫array。
#定義數據a = np.array([1,2,3,4,5])#查詢a[0]#切片訪問:獲取指定序號範圍的元素a[1:3]#查看數據類型dtypea.dtype#平均值a.mean()#標準差a.std()#向量化運行:乘以標量b=np.array([1,2,3])c=b*4
Pandas
pandas的一維數據結構是series,series是建立在numpy基礎上,series有索引的功能。
定義數據:
stockS=pd.Series([54.74,190.9,173.14,1050.3,181.86,1139.49], index=[騰訊, 阿里巴巴, 蘋果, 谷歌, Facebook, 亞馬遜])
輸出:
stockS
獲取描述統計信息:
stockS.describe()
iloc屬性用於根據位置獲取值:
stockS.iloc[0] #獲取數集中第一個值
loc屬性用於根據索引獲取值:
stockS.loc[騰訊]
向量化運算:
s1=pd.Series([1,2,3,4],index=[a,b,c,d])s2=pd.Series([10,20,30,40],index=[a,b,e,f])s3=s1+s2
刪除缺失值:
s3.dropna()
將缺失值進行補充,用0來填充:
s3=s1.add(s2,fill_value=0)
2.二維數據分析
導入包
import numpy as npimport pandas as pd
Numpy
#定義二維數組a=np.array([[1,2,3,4],[5,6,7,8], [9,10,11,12]])#獲取行號是0,列號是2的元素a[0,2]
3
#獲取第1列a[:,0]
array([1, 5, 9])
#獲取第1行a[0,:]
array([1, 2, 3, 4])
#如果沒有指定數軸參數,會計算整個數組的平均值a.mean()
6.5
#按軸計算:axis=1按行計算,axis=0按列計算a.mean(axis=1)
array([ 2.5, 6.5, 10.5])
Pandas
首先定義字典:
salesDict={ 購葯時間:[2018-01-01 星期五,2018-01-02 星期六,2018-01-06 星期三], 社保卡號:[001616528,001616528,0012602828], 商品編碼:[236701,236701,236701], 商品名稱:[強力VC銀翹片,清熱解毒口服液,感康], 銷售數量:[6,1,2], 應收金額:[82.8,28,16.8], 實收金額:[69,24.64,15]}#導入有序字典from collections import OrderedDict#定義一個有序字典salesOrderDict=OrderedDict(salesDict)#定義數據框:傳入字典,列名salesDf=pd.DataFrame(salesOrderDict)
有序字典輸出結果:
數據框:
#平均值:是按每列來求平均值salesDf.mean()
查詢數據:iloc屬性用於根據位置獲取值
#查詢第1行第2列的元素salesDf.iloc[0,1]
001616528
#獲取第1行,:代表所有列salesDf.iloc[0,:]
#獲取第1列,:代表所有行salesDf.iloc[:,0]
loc屬性用於根據索引獲取值
salesDf.loc[0,商品編碼]
236701
salesDf.loc[0,:]
salesDf[商品名稱]
切片功能,通過列表來選擇某幾列的數據
salesDf[[商品名稱,銷售數量]]
通過切片功能,獲取指定範圍的列
salesDf.loc[:,購葯時間:銷售數量]
數據框複雜查詢:條件判斷
#第1步:構建查詢條件querySer=salesDf.loc[:,銷售數量]>1type(querySer)
pandas.core.series.Series
querySer
salesDf.loc[querySer,:]
查看數據集描述統計信息
讀取excel數據
fileNameStr=J:da數據分析入門(Python)第4關數據分析的基本過程/朝陽醫院2018年銷售數據.xlsxxls = pd.ExcelFile(fileNameStr)salesDf = xls.parse(Sheet1)
列印出前3行,以確保數據運行正常
salesDf.head(3)
#有多少行,多少列salesDf.shape
(6578, 7)
#查看某一列的數據類型salesDf.loc[:,銷售數量].dtype
dtype(float64)
#查看所有列的數據類型salesDf.dtypes
購葯時間 object
社保卡號 float64商品編碼 float64商品名稱 object銷售數量 float64應收金額 float64實收金額 float64dtype: object#查看salesDf的類型,是數據框type(salesDf)
pandas.core.frame.DataFrame
#查看每一列的統計數值salesDf.describe()
推薦閱讀:
※職位速遞:知名互聯網金融公司高級數據分析工程師(年薪30~50W)
※泰坦尼克號倖存者特徵分析
※【數據分析】中文筆記翻譯計劃順利結束
※探索電影大數據
※數據分析的三板斧
TAG:數據分析 |