十分鐘入門Python數據分析包:Pandas、Numpy
來自專欄 30歲轉行數據分析
Pandas和Numpy是Python做數據分析的兩個利器,也是Python使用最廣泛的兩個包。現在從數據結構入手了解Pandas和Numpy。看的同時動手敲敲代碼是重點。
一維數據分析
一維的數據分析要先了解一維數組,Numpy的Array和Pandas的Series都是一維數組,後者功能更多,實際中運用較多。
1.一維數組:Numpy Array
1)定義
a=np.array([2,3,4,5])a
array([2, 3, 4, 5])
2)查詢
a[0]
2
3)切片
a[1:3]
array([3, 4])
4)循環訪問
for i in a: print(i)
2
345
5)數據類型
a.dtype
dtype(int32)
6)數據結構類型
type(a)
numpy.ndarray
7)一維 數組Array和列表的區別
Array支持統計計算:如mean(),std()
Array支持向量化計算:如向量相加,乘標量
Array的元素必須是同一種數據類型,而列表可以不同
2.一維數組:Pandas Series
1)定義
stockS=pd.Series([54.74,190.9,173.14,1050.3,181.86,1139.49], index=(騰訊,阿里巴巴,蘋果,谷歌,Facebook,亞馬遜))stockS
騰訊 54.74
阿里巴巴 190.90蘋果 173.14谷歌 1050.30Facebook 181.86亞馬遜 1139.49dtype: float642)獲取描述統計信息
stockS.describe()
count 6.000000
mean 465.071667
std 491.183757min 54.74000025% 175.32000050% 186.38000075% 835.450000max 1139.490000dtype: float643)iloc:根據位置獲取值
stockS.iloc[0]
54.74
4)loc:根據索引獲取值
stockS[騰訊]
54.74
5)向量相加
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+s2s3
a 11.0
b 22.0c NaNd NaNe NaNf NaNdtype: float64消除NONE值方法1:刪除缺失值
s3.dropna()
a 11.0
b 22.0dtype: float64消除NONE值 方法2:填充缺失值
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.add(s2,fill_value=0)s3
a 11.0
b 22.0c 3.0d 4.0e 30.0f 40.0
dtype: float64二維數據分析
相應的二維的數據分析有二維數組:Numpy的array和Pandas的DataFrame,實際運用也是偏向後者。
1.二維數組:Numpy Array
1)定義
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8], [ 9, 10, 11, 12]])2)查詢元素
查詢元素:數組[行號,列號]
a[0,2]
3
查詢一列:數組[:,列號]
a[:,1]
array([ 2, 6, 10])
查詢一行:數組[行號,:]
a[0,:]
array([1, 2, 3, 4])
3)數軸參數axis
數組平均值是所有元素的平均值
a.mean()
6.5
按行計算平均值
a.mean(axis=1)
array([ 2.5, 6.5, 10.5])
按列計算平均值
a.mean(axis=0)
array([5., 6., 7., 8.])
2.二維數組:Pandas DataFrame
1)定義
saleDict={購葯時間:[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]}saleDf=pd.DataFrame(saleDict)saleDf
通過有序字典,定義按字典順序排列的數據框
saleDict={購葯時間:[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 OrderedDictsaleOrderDict=OrderedDict(saleDict)saleDf=pd.DataFrame(saleOrderDict)saleDf
2)計算平均值
數據框的平均值是按列計算,且只計算數據類型為數值的那些列
saleDf.mean()
商品編碼 236701.000000
銷售數量 3.000000應收金額 42.533333實收金額 36.213333dtype: float643)iloc查詢
查詢元素:數據框.iloc[行號,列號]
saleDf.iloc[0,0]
2018-01-01星期五
查詢行:數據框.iloc[行號,:]
saleDf.iloc[0,:]
查詢列:數據框.iloc[:,列號]
saleDf.iloc[:,0]
4)loc查詢
查詢元素:數據框.loc[行號,列索引]
saleDf.loc[0,社保卡號]
001616528
查詢行:數據框.loc[行號,:]
saleDf.loc[0,:]
查詢列:數據框.loc[:,列索引],也可以數據框[列索引]
saleDf.loc[:,社保卡號]
saleDf[社保卡號]
5)查詢多個列:數據框[[列索引1,列索引2,...]]
或數據框.loc[:,[列索引1,列索引2,...]]
saleDf[[商品名稱,銷售數量]]
saleDf.loc[:,[商品名稱,銷售數量]]
6)數據框複雜查詢:通過條件判斷篩選數據
a.構建查詢條件
querySer=saleDf.loc[:,銷售數量]>1type(querySer)
pandas.core.series.Series
querySer
0 True
1 False2 TrueName: 銷售數量, dtype: boolb.應用查詢條件查詢
saleDf.loc[querySer,:]
3.Numpy和Pandas數組的比較
相比Numpy ,Pandas有兩個優點:
1)Numpy 一、二維數組array每個元素都是同一種數據類型,但DataFrame每列的數據類型可以不同;
2)DataFrame的行和列都有索引值
這些特點使得DataFrame能更好的處理類似excel表格類型的數據,在數據分析中使用更方面。
4.查看數據集描述統計信息
1)通過excel文件獲取數據
fileNameStr=C:suechen朝陽醫院2018年銷售數據.xlsxx1=pd.ExcelFile(fileNameStr)saleDf=x1.parse(Sheet1)
2)獲取數據集前5行數據
3)獲取數據描述統計信息
saleDf.describe()
4)獲取數據集行數列數
saleDf.shape
5)獲取各列數據的數據類型
saleDf.dtypes
推薦閱讀:
※如何利用數據驅動設計
※數據報告tips
※雨沐田:大數據分析報告也要「看人下菜」
※數據分析 練手項目
※數據分析師需要讀那些書?