十分鐘入門Python數據分析包:Pandas、Numpy

十分鐘入門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

3

4

5

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.30

Facebook 181.86

亞馬遜 1139.49

dtype: float64

2)獲取描述統計信息

stockS.describe()

count 6.000000

mean 465.071667

std 491.183757

min 54.740000

25% 175.320000

50% 186.380000

75% 835.450000

max 1139.490000

dtype: float64

3)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.0

c NaN

d NaN

e NaN

f NaN

dtype: float64

消除NONE值方法1:刪除缺失值

s3.dropna()

a 11.0

b 22.0

dtype: 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.0

c 3.0

d 4.0

e 30.0

f 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.213333

dtype: float64

3)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 False

2 True

Name: 銷售數量, dtype: bool

b.應用查詢條件查詢

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
雨沐田:大數據分析報告也要「看人下菜」
數據分析 練手項目
數據分析師需要讀那些書?

TAG:Python | 數據分析 | pandas包 |