Data Analysis
一維數據分析
Coding:
#numpy一維數據分析import numpy as npArray_1=np.array([2,3,4,5])#創建一維numpy數組Data_2=Array_1[1]#將索引為2的數據存入Data_2Data_Slice=Array_1[1:3]#切片查詢Data_type=Array_1.dtype#數據類型Data_Avg=Array_1.mean()#一維數組的平均值Data_Std=Array_1.std()#一維數組的標準差Data_Vector=Array_1*4#一維數組的向量化運算##pandas一維數據分析import pandas as pdtitle=[騰訊,阿里巴巴,蘋果,谷歌,Facebook,亞馬遜,]data=[54.74,190.9,173.14,1050.3,181.86,1139.4]Stocks=pd.Series(data,index=title)#創建一維pandas數組Stastic_info=Stocks.describe()#一維數據的統計信息Stocks_1=Stocks.iloc[0]#將索引為0的數據存入Stocks_1Series_1=pd.Series([1,2,3,4],index=[a,b,c,d])Series_2=pd.Series([10,20,30,40],index=[a,b,e,f])Series_3=Series_1+Series_2#一維數組的向量化運算Series_4=Series_3.dropna()#一維數組的缺失值處理:刪除Series_5=Series_3.fillna(value=0)#一維數組的缺失值處理:替換print(Create a 1d numpy array:
,Array_1)print(Query data which index is 1:
,Data_2)print(Slice query which position is between 1 and 3:
,Data_Slice)print("Array_1s data type is:
",Data_type)print(The average of Array_1 is :
,Data_Avg)print(The Standard Deviation of Array_1 is :
,Data_Std)print("Array_1s Vectorization Operation is :
",Data_Vector)print(Create a 1d pandas array:
,Stocks)print(The stastic infomation of Stocks is:
,Stastic_info)print(Query data which index is 0:
,Stocks_1)print(Vectorization Operation between Series_1 and Series_3 is:
,Series_3)print(Delete the Missing Data of Series_3:
,Series_4)print(Change the Missing Data of Series_3:
,Series_5)
Run:
Create a 1d numpy array:
[2 3 4 5]Query data which index is 1: 3Slice query which position is between 1 and 3:
[3 4]Array_1s data type is: int32The average of Array_1 is : 3.5The Standard Deviation of Array_1 is : 1.11803398875Array_1s Vectorization Operation is : [ 8 12 16 20]Create a 1d pandas array:
騰訊 54.74阿里巴巴 190.90蘋果 173.14谷歌 1050.30Facebook 181.86亞馬遜 1139.40dtype: float64The stastic infomation of Stocks is: count 6.000000mean 465.056667
std 491.159043min 54.74000025% 175.32000050% 186.38000075% 835.450000max 1139.400000dtype: float64Query data which index is 0: 54.74Vectorization Operation between Series_1 and Series_3 is:
a 11.0b 22.0c NaNd NaNe NaNf NaNdtype: float64Delete the Missing Data of Series_3: a 11.0b 22.0
dtype: float64Change the Missing Data of Series_3: a 11.0b 22.0c 0.0d 0.0e 0.0f 0.0dtype: float64
二維數據分析
Coding:
#numpy二維數據分析
import numpy as npMatrix_1=np.arange(1,13,1).reshape(3,4)#創建2維numpy數組Data_1=Matrix_1[0,2]#將坐標為(0,2)的數據存入Data_1Row_1=Matrix_1[0,:]#查詢Matrix_1的第一行數據Column_1=Matrix_1[:,0]#查詢Matrix_1的第一列數據Total_Avg=Matrix_1.mean()#Matrix_1整體的平均數Column_Avg=Matrix_1.mean(axis=1)#Matrix_1第一列的平均數print("The Matrix_1 is :
",Matrix_1)print(The Data_1 is :
,Data_1)print(The data which is in first row:
,Row_1)print(The data which is in column one:
,Column_1)print(The average of Matirx_1 is :
,Total_Avg)print(The average of Matirx_1 by columns are:
,Column_Avg)#pandas二維數據分析import pandas as pdfrom collections import OrderedDictSales_Dict={ 購葯時間:[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]}Sales_Order_Dict=OrderedDict(Sales_Dict)Sales_Df=pd.DataFrame(Sales_Order_Dict)#創建pandas數據框Sales_Avg=Sales_Df.mean()#自動對數值型數據列進行平均值計算Data_2=Sales_Df.iloc[0,1]#將坐標為(0,1)的數據存入Data_2Row_2=Sales_Df.iloc[1,:]#查詢二維pandas數組第二行數據,或Sales_Df.loc[1,:]Label_1=Sales_Df.loc[0,商品編碼]#查詢第一行的商品編碼Column_Commodity_Code=Sales_Df.loc[:,商品編碼]#查詢商品編碼一列數據Data_List=Sales_Df[[商品名稱,銷售數量]]#通過列表查詢商品名稱和銷售數量這兩列數據Data_Slice=Sales_Df.loc[:,購葯時間:銷售數量]#通過切片查詢購葯時間到銷售數量之間所有列的數據Sales_Bool=Sales_Df[Sales_Df[銷售數量]>1]Sales_Df_Description=Sales_Df.describe()print(The Sales_Df is:
,Sales_Df)print(The average of Sales_Df is :
,Sales_Avg)print(The Data_2 is :
,Data_2)print(The data which is in second row :
,Row_2)print(The commodity code in fist row is:
,Label_1)print(Query the column which name is commodity code:
,Column_Commodity_Code)print(The Data_List are:
,Data_List)print(The Data_Slice are:
,Data_Slice)print(The Sales_Bool are:
,Sales_Bool)print(The Sales_Df_Description is:
,Sales_Df_Description)#導入數據path=C:/Users/ASUS/Desktop/numpy_test/朝陽醫院2018年銷售數據.xlsxData=pd.read_excel(path)#導入excel數據Data_View=Data.head(7)#Data前7行數據Data_Shape=Data.shape#Data的形狀print(The Data is :
,Data)print(The first 7 lines are:
,Data_View)print(The shape of Data is:
,Data_Shape)
Run:
The Matrix_1 is :
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]The Data_1 is : 3The data which is in first row: [1 2 3 4]The data which is in column one: [1 5 9]The average of Matirx_1 is :
6.5The average of Matirx_1 by columns are: [ 2.5 6.5 10.5]The Sales_Df is: 購葯時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額0 2018-01-01 星期五 001616528 236701 強力VC銀翹片 6 82.8 69.001 2018-01-02 星期六 001616528 236701 清熱解毒口服液 1 28.0 24.642 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.00The average of Sales_Df is :商品編碼 236701.000000
銷售數量 3.000000應收金額 42.533333實收金額 36.213333dtype: float64The Data_2 is : 001616528The data which is in second row : 購葯時間 2018-01-02 星期六社保卡號 001616528商品編碼 236701
商品名稱 清熱解毒口服液銷售數量 1應收金額 28實收金額 24.64Name: 1, dtype: objectThe commodity code in fist row is: 236701Query the column which name is commodity code: 0 2367011 2367012 236701Name: 商品編碼, dtype: int64The Data_List are: 商品名稱 銷售數量0 強力VC銀翹片 61 清熱解毒口服液 12 感康 2The Data_Slice are: 購葯時間 社保卡號 商品編碼 商品名稱 銷售數量0 2018-01-01 星期五 001616528 236701 強力VC銀翹片 61 2018-01-02 星期六 001616528 236701 清熱解毒口服液 12 2018-01-06 星期三 0012602828 236701 感康 2The Sales_Bool are: 購葯時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額0 2018-01-01 星期五 001616528 236701 強力VC銀翹片 6 82.8 69.02 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.0The Sales_Df_Description is: 商品編碼 銷售數量 應收金額 實收金額count 3.0 3.000000 3.000000 3.000000mean 236701.0 3.000000 42.533333 36.213333std 0.0 2.645751 35.318739 28.800287min 236701.0 1.000000 16.800000 15.00000025% 236701.0 1.500000 22.400000 19.82000050% 236701.0 2.000000 28.000000 24.64000075% 236701.0 4.000000 55.400000 46.820000max 236701.0 6.000000 82.800000 69.000000The Data is : 購葯時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額0 2018-01-01 星期五 1.616528e+06 236701.0 強力VC銀翹片 6.0 82.8 69.001 2018-01-02 星期六 1.616528e+06 236701.0 清熱解毒口服液 1.0 28.0 24.642 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.003 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒靈 1.0 28.0 28.004 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒靈 8.0 224.0 208.005 2018-01-20 星期三 1.338953e+07 236701.0 三九感冒靈 1.0 28.0 28.006 2018-01-31 星期日 1.014649e+08 236701.0 三九感冒靈 2.0 56.0 56.007 2018-02-17 星期三 1.117733e+07 236701.0 三九感冒靈 5.0 149.0 131.128 2018-02-22 星期一 1.006569e+10 236701.0 三九感冒靈 1.0 29.8 26.229 2018-02-24 星期三 1.338953e+07 236701.0 三九感冒靈 4.0 119.2 104.8910 2018-03-05 星期六 1.002639e+10 236701.0 三九感冒靈 2.0 59.6 59.6011 2018-03-05 星期六 1.022850e+08 236701.0 三九感冒靈 3.0 84.0 84.0012 2018-03-05 星期六 1.007740e+10 236701.0 清熱解毒口服液 1.0 28.0 24.6413 2018-03-07 星期一 1.007740e+10 236701.0 清熱解毒口服液 5.0 140.0 112.0014 2018-03-09 星期三 1.007984e+10 236701.0 清熱解毒口服液 6.0 168.0 140.0015 2018-03-15 星期二 1.003133e+10 236701.0 清熱解毒口服液 2.0 56.0 49.2816 2018-03-15 星期二 1.007034e+08 236701.0 清熱解毒口服液 2.0 56.0 49.2817 2018-03-15 星期二 1.071233e+07 236701.0 清熱解毒口服液 5.0 140.0 112.0018 2018-03-20 星期日 1.166883e+07 236701.0 清熱解毒口服液 6.0 168.0 140.0019 2018-03-22 星期二 1.006635e+10 236701.0 清熱解毒口服液 1.0 28.0 28.0020 2018-03-23 星期三 1.021333e+08 236701.0 清熱解毒口服液 6.0 168.0 140.0021 2018-03-24 星期四 1.007887e+10 236701.0 清熱解毒口服液 6.0 168.0 140.0022 2018-03-24 星期四 1.019246e+08 236701.0 清熱解毒口服液 1.0 28.0 28.0023 2018-03-28 星期一 1.007523e+10 236701.0 清熱解毒口服液 6.0 168.0 140.0024 2018-03-29 星期二 1.318943e+07 236701.0 清熱解毒口服液 1.0 28.0 28.0025 2018-04-05 星期二 1.007985e+10 236701.0 清熱解毒口服液 2.0 56.0 49.2826 2018-04-07 星期四 1.165263e+07 236701.0 清熱解毒口服液 6.0 168.0 140.0027 2018-04-13 星期三 1.100513e+07 236701.0 清熱解毒口服液 2.0 56.0 56.0028 2018-04-22 星期五 1.034463e+07 236701.0 清熱解毒口服液 6.0 168.0 140.0029 2018-05-01 星期日 1.007031e+10 236701.0 清熱解毒口服液 6.0 168.0 140.00... ... ... ... ... ... ... ...6548 2018-04-10 星期日 1.001568e+10 2367011.0 開博通 1.0 28.0 25.006549 2018-04-10 星期日 1.003980e+10 2367011.0 開博通 2.0 56.0 50.006550 2018-04-10 星期日 1.343763e+07 2367011.0 開博通 1.0 28.0 25.006551 2018-04-12 星期二 1.616528e+06 2367011.0 開博通 1.0 28.0 28.006552 2018-04-13 星期三 1.014095e+08 2367011.0 開博通 2.0 56.0 50.006553 2018-04-13 星期三 1.340663e+07 2367011.0 開博通 2.0 56.0 50.006554 2018-04-14 星期四 1.003929e+10 2367011.0 開博通 2.0 56.0 50.006555 2018-04-15 星期五 1.006668e+09 2367011.0 開博通 2.0 56.0 50.006556 2018-04-15 星期五 1.001877e+10 2367011.0 開博通 2.0 56.0 49.286557 2018-04-15 星期五 1.002816e+10 2367011.0 心痛定 2.0 89.6 79.606558 2018-04-15 星期五 1.008373e+10 2367011.0 高特靈 2.0 11.2 9.866559 2018-04-16 星期六 1.003554e+10 2367011.0 高特靈 2.0 11.2 9.866560 2018-04-17 星期日 1.117733e+07 2367011.0 高特靈 2.0 11.2 9.866561 2018-04-18 星期一 1.001877e+10 2367011.0 高特靈 1.0 5.6 4.936562 2018-04-21 星期四 1.113763e+07 2367011.0 高特靈 2.0 11.2 10.006563 2018-04-22 星期五 1.001877e+10 2367011.0 高特靈 1.0 5.6 5.006564 2018-04-24 星期日 1.007329e+10 2367011.0 高特靈 1.0 5.6 5.606565 2018-04-25 星期一 1.001917e+10 2367011.0 高特靈 1.0 5.6 5.006566 2018-04-25 星期一 1.001919e+10 2367011.0 高特靈 3.0 16.8 15.466567 2018-04-25 星期一 1.003935e+10 2367011.0 高特靈 2.0 11.2 9.866568 2018-04-26 星期二 1.005256e+10 2367011.0 高特靈 2.0 11.2 10.006569 2018-04-26 星期二 1.089458e+08 2367011.0 高特靈 2.0 11.2 10.006570 NaN 1.177863e+07 2367011.0 高特靈 10.0 56.0 56.006571 2018-04-25 星期二 NaN 2367011.0 高特靈 2.0 11.2 9.866572 2018-04-27 星期三 1.006048e+10 2367011.0 高特靈 1.0 5.6 5.006573 2018-04-27 星期三 1.078861e+08 2367011.0 高特靈 10.0 56.0 54.806574 NaN NaN NaN NaN NaN NaN NaN6575 2018-04-27 星期三 1.008787e+10 2367011.0 高特靈 2.0 11.2 9.866576 2018-04-27 星期三 1.340663e+07 2367011.0 高特靈 1.0 5.6 5.006577 2018-04-28 星期四 1.192693e+07 2367011.0 高特靈 2.0 11.2 10.00[6578 rows x 7 columns]The first 7 lines are: 購葯時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額0 2018-01-01 星期五 1.616528e+06 236701.0 強力VC銀翹片 6.0 82.8 69.001 2018-01-02 星期六 1.616528e+06 236701.0 清熱解毒口服液 1.0 28.0 24.642 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.003 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒靈 1.0 28.0 28.004 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒靈 8.0 224.0 208.005 2018-01-20 星期三 1.338953e+07 236701.0 三九感冒靈 1.0 28.0 28.006 2018-01-31 星期日 1.014649e+08 236701.0 三九感冒靈 2.0 56.0 56.00The shape of Data is: (6578, 7)
藥店銷售數據分析:月均消費次數、月均消費金額、客單價
Coding:
# 1.提出問題:import pandas as pd#2.理解數據:採集數據、導入數據、理解數據path=C:/Users/ASUS/Desktop/numpy_test/朝陽醫院2018年銷售數據.xlsxSales_Df=pd.read_excel(path,dtype=object)#導入數據,確保數據準確print(Sales_Df.head())#查看數據信息以便理解數據#購葯時間可計算一共有幾個月,社保卡號可計算有多少顧客,實收金額可計算總消費金額print(Sales_Df.shape)#查看數據形狀#3.數據清洗:選擇子集、列名重命名、缺失值處理、數據類型轉換、數據排序、異常值處理#1)選擇子集Target_Df=Sales_Df[[購葯時間,社保卡號,銷售數量,實收金額]]print(Target_Df.head())#2)列名重命名Change_Name={購葯時間:銷售時間}Target_Df.rename(columns=Change_Name,inplace=True)print(Target_Df.head())#3)缺失值處理:python內置的None,pandas中的NA,浮點值NaNTarget_Df=Target_Df.dropna(subset=[銷售時間,社保卡號],how=any)print(Target_Df.shape)#4)數據類型轉換Target_Df[社保卡號]=Target_Df[社保卡號].astype(float)Target_Df[銷售數量]=Target_Df[銷售數量].astype(float)Target_Df[實收金額]=Target_Df[實收金額].astype(float)print(Target_Df.dtypes)def Split_Sales_Time(Time_Origin_Series): Time_List=[] for value in Time_Origin_Series: Date_Str=value.split( )[0] Time_List.append(Date_Str) Time_Save_Series=pd.Series(Time_List) return Time_Save_SeriesTarget_Df[銷售時間]=Split_Sales_Time(Target_Df[銷售時間])Target_Df=Target_Df.dropna(subset=[銷售時間],how=any)Target_Df[銷售時間]=pd.to_datetime(Target_Df[銷售時間],format=%Y-%m-%d,errors=coerce)print(Target_Df.head())print(Target_Df.shape)#5).數據排序Target_Df=Target_Df.sort_values(by=銷售時間,ascending=True)print(Target_Df.head())Target_Df=Target_Df.reset_index(drop=True)print(Target_Df.head())#6).異常值處理print(Target_Df.describe())print(Target_Df.shape)Target_Df=Target_Df[Target_Df[銷售數量]>0]print(Target_Df.shape)#4.構建模型(計算指標)#1)月均消費次數=總消費次數/月數,(ps:同一天同一人算一次,需去重)Total_Consumption=Target_Df.drop_duplicates(subset=[銷售時間,社保卡號]).shape[0]Months=(Target_Df.loc[Total_Consumption-1,銷售時間]-Target_Df.loc[0,銷售時間]).days//30Months_Avg_Consumption=float(Total_Consumption)/float(Months)print(Months_Avg_Consumption)#2)月均消費金額=總消費金額/月數Months_Avg_Consumption_Account=Target_Df[實收金額].sum()/Monthsprint(Months_Avg_Consumption_Account)#3)客單價=總消費金額/總消費次數PCT=Target_Df[實收金額].sum()/Total_Consumptionprint(PCT)
Run:
購葯時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額
0 2018-01-01 星期五 001616528 236701 強力VC銀翹片 6 82.8 691 2018-01-02 星期六 001616528 236701 清熱解毒口服液 1 28 24.642 2018-01-06 星期三 0012602828 236701 感康 2 16.8 153 2018-01-11 星期一 0010070343428 236701 三九感冒靈 1 28 284 2018-01-15 星期五 00101554328 236701 三九感冒靈 8 224 208(6578, 7) 購葯時間 社保卡號 銷售數量 實收金額0 2018-01-01 星期五 001616528 6 691 2018-01-02 星期六 001616528 1 24.642 2018-01-06 星期三 0012602828 2 153 2018-01-11 星期一 0010070343428 1 284 2018-01-15 星期五 00101554328 8 208 銷售時間 社保卡號 銷售數量 實收金額0 2018-01-01 星期五 001616528 6 691 2018-01-02 星期六 001616528 1 24.642 2018-01-06 星期三 0012602828 2 153 2018-01-11 星期一 0010070343428 1 284 2018-01-15 星期五 00101554328 8 208(6575, 4)銷售時間 object社保卡號 float64銷售數量 float64實收金額 float64dtype: object 銷售時間 社保卡號 銷售數量 實收金額0 2018-01-01 1.616528e+06 6.0 69.001 2018-01-02 1.616528e+06 1.0 24.642 2018-01-06 1.260283e+07 2.0 15.003 2018-01-11 1.007034e+10 1.0 28.004 2018-01-15 1.015543e+08 8.0 208.00(6572, 4) 銷售時間 社保卡號 銷售數量 實收金額0 2018-01-01 1.616528e+06 6.0 69.03436 2018-01-01 1.061673e+07 2.0 3.01190 2018-01-01 1.007397e+10 5.0 145.03859 2018-01-01 1.007397e+10 6.0 92.53888 2018-01-01 1.001429e+10 1.0 23.0 銷售時間 社保卡號 銷售數量 實收金額0 2018-01-01 1.616528e+06 6.0 69.01 2018-01-01 1.061673e+07 2.0 3.02 2018-01-01 1.007397e+10 5.0 145.03 2018-01-01 1.007397e+10 6.0 92.54 2018-01-01 1.001429e+10 1.0 23.0 社保卡號 銷售數量 實收金額count 6.572000e+03 6572.000000 6572.000000mean 6.093421e+09 2.385423 46.338944std 4.888798e+09 2.374173 81.002074min 1.616528e+06 -10.000000 -374.00000025% 1.014234e+08 1.000000 12.32000050% 1.001650e+10 2.000000 26.60000075% 1.004882e+10 2.000000 53.000000max 1.283612e+10 50.000000 2650.000000(6572, 4)(6529, 4)1072.061086.6619999995756.98382649253691
推薦閱讀:
※最優拍賣機制的數學原理
※【轉載】世界第一數學強校的背後
※復幾何的故事(1)複數的史前史
※無窮大的數學(二):0.9循環 < 1?——超實數
※科普小說《遇見喜歡數學的女孩》三部曲下載地址