Python數據分析基礎

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最大化的分箱方案
數據挖掘分類方法小結

TAG:數據分析 | Python | 數據分析師 |