Python數據分析基礎
1 人贊了文章
Numpy 一維數組
創建一維數組
a = np.array([1,2,3,4])
使用索引查詢元素
IN : a[0]OUT : 1
切片查詢(:)
IN :a[0:1]OUT : array([1])IN :a[1:3]OUT : array([2,3,4])IN :a[-1:]OUT : array([4])
數據類型(dtype)
IN : a.dtypeOUT : dtype(int32)
計算平均值(mean)
IN : a.mean()OUT : 2.5
計算標準差(std)
IN : a.std()OUT : 1.118033988749895
向量化計算(向量與標量的計算)
IN : b = a * 4IN : bOUT : array([ 4, 8, 12, 16])
Pandas 一維數據結構
創建一維數據結構(Series,使用index增加索引)
IN : camera_s = pd.Series([2500,3000,500,1000,1500], index = [FM2,F3,FTN,FA,F2])IN : camera_sOUT : FM2 2500F3 3000FTN 500FA 1000F2 1500dtype: int64
描述性統計(describe)
IN : camera_s.describe()OUT : count 5.000000mean 1700.000000std 1036.822068min 500.00000025% 1000.00000050% 1500.00000075% 2500.000000max 3000.000000dtype: float64
根據索引獲取值(iloc根據位置索引 、 loc根據關鍵字索引)
IN : camera_s.iloc[1]OUT : 3000IN : camera_s.loc[F3]OUT : 3000
向量運算
IN : c1 = pd.Series([1,2,3,4],index = [a,b,c,d])IN : c2 = pd.Series([11,22,33,44],index = [a,b,e,f])IN : c3 = c1 + c2IN : c3OUT:a 12.0b 24.0c NaNd NaNe NaNf NaNdtype: float64
出現NaN ,就是空值,是因為部分索引只在一個數據結構中出現,
這時候我們有兩種方法處理空值,
1>刪除空值(dropna())
IN : c3.dropna()OUT : a 12.0b 24.0dtype: float64
2>將空值替換為想要的值
IN : c3 = c1.add(c2,fill_value = 0)IN : c3OUT :a 12.0b 24.0c 3.0d 4.0e 33.0f 44.0dtype: float64
Numpy二維數組
創建numpy二維數組
a = np.array([[1,2,3,4], [11,22,33,44], [111,222,333,444]])
查詢元素(a[行號,列號])
IN : a[0,:]OUT : array([1, 2, 3, 4])IN : a[:,0]OUT : array([ 1, 11, 111])
計算平均值(mean())
IN : #如果沒有指定數軸參數,會計算整個數組的平均值IN : a.mean()OUT : 102.5IN : #按軸計算:axis=1計算每一行IN : a.mean(axis = 1)OUT : array([ 2.5, 27.5, 277.5])
Pandas二維數組:數據框(DataFrame)
適合創建表格數據
IN : import pandas as pd#第1步:定義一個字典,映射列名與對應列的值sales_dict = { 購買時間:[2017-10-7 星期六,2018-07-22 星期三,2018-05-06 星期三], 相機編號:[001616528,001616528,0012602828], 商品編碼:[236701,236701,236701], 商品名稱:[尼康FM2,尼康F3,尼康瑪特FTN], 銷售數量:[6,1,2], 應收金額:[82.8,28,16.8], 實收金額:[69,24.64,15]}#導入有序字典from collections import OrderedDict#定義一個有序字典sales_orderdict = OrderedDict(sales_dict)#定義數據框:傳入字典,列名salesDF = pd.DataFrame(sales_orderdict)salesDF
計算平均值(mean())
IN : salesDF.mean()OUT : 商品編碼 236701.000000銷售數量 3.000000應收金額 42.533333實收金額 36.213333dtype: float64
通過索引序號查詢元素(iloc)
IN :iloc屬性用於根據位置獲取值#查詢第1行第2列的元素salesDF.iloc[0,3]OUT : 尼康FM2#獲取第1行,:代表所有列salesDF.iloc[0,:]OUT :購買時間 2017-10-7 星期六相機編號 001616528商品編碼 236701商品名稱 尼康FM2銷售數量 6應收金額 82.8實收金額 69Name: 0, dtype: objectIN : #獲取第1列,:代表所有行salesDF.iloc[:,3]OUT :0 尼康FM21 尼康F32 尼康瑪特FTNName: 商品名稱, dtype: object
通過索引值查詢元素(loc)
IN : loc屬性用於根據索引獲取值#查詢第1行"商品名稱"列的元素salesDF.loc[0,商品名稱]OUT : 尼康FM2IN :#獲取第1行salesDF.loc[0,:]OUT :購買時間 2017-10-7 星期六相機編號 001616528商品編碼 236701商品名稱 尼康FM2銷售數量 6應收金額 82.8實收金額 69Name: 0, dtype: objectIN : #獲取「商品名稱」這一列#salesDf.loc[:,商品名稱]#簡單方法:獲取「商品名稱」這一列salesDF[商品名稱]OUT :0 尼康FM21 尼康F32 尼康瑪特FTNName: 商品名稱, dtype: object
查詢多列及切片
# 通過列表查詢某幾列的數據(好像得按順序輸入,不然會出錯)IN : salesDF[[商品名稱,銷售數量]]OUT :
IN : #通過切片功能,獲取指定範圍的列salesDF.loc[:,相機編號:銷售數量]
OUT :
通過條件判斷篩選
IN :#通過條件判斷篩選#第1步:構建查詢條件querySer = salesDF.loc[:,銷售數量]>1# 調用查詢salesDF.loc[querySer,:]
讀取Excel數據
#讀取Ecxcel數據fileNameStr=./朝陽醫院2018年銷售數據.xlsxxls = pd.ExcelFile(fileNameStr)salesDf = xls.parse(Sheet1)
操作
#列印出前3行,以確保數據運行正常salesDf.head(5)
#有多少行,多少列salesDf.shape
#查看某一列的數據類型salesDf.loc[:,銷售數量].dtype
#查看每一列的統計數值salesDf.describe()
推薦閱讀:
※數據分析師職業規劃:人生本來就應該提前做好準備
※數據驅動業務的七種類型,你目前在哪一種
※一個簡單實例帶你輕鬆入門EXCEL數據分析
※基於變數KS最大化的分箱方案
※數據挖掘分類方法小結