數(shù)據(jù)分析
數(shù)據(jù)分析相關(guān)知識(shí)
數(shù)據(jù)分析的目的
將雜亂無章的數(shù)據(jù)信息集中提煉出有用的數(shù)據(jù),從中找出研究對(duì)象內(nèi)在的規(guī)律。
數(shù)據(jù)分析的分類
描述性數(shù)據(jù)分析(70%——80%)
從一組數(shù)據(jù)中描述該組數(shù)據(jù)的集中和離散情況。主要對(duì)調(diào)查總體所有變量的有關(guān)數(shù)據(jù)做統(tǒng)計(jì)性分析罐柳。
對(duì)比分析法
平均分析法
交叉分析法
探索性數(shù)據(jù)分析
從海量的數(shù)據(jù)中去找出規(guī)律馋嗜,并產(chǎn)生分析模型和研究假設(shè)。
驗(yàn)證性數(shù)據(jù)分析
驗(yàn)證科研假設(shè)測(cè)試所需的條件是否達(dá)到采章,以保證驗(yàn)證性分析的可靠性。
什么是數(shù)據(jù)分析
狹義:從海量的數(shù)據(jù)中將潛藏的有價(jià)值的信息進(jìn)行提取壶辜,幫助企業(yè)和個(gè)人預(yù)測(cè)未來的趨勢(shì)和行為悯舟。
廣義:從用戶需求開始,包括信息提取砸民、處理抵怎、分析到我們的數(shù)據(jù)可視化及數(shù)據(jù)預(yù)測(cè)。
數(shù)據(jù)分析的過程
現(xiàn)狀分析
了解企業(yè)整體運(yùn)營情況岭参,通過數(shù)據(jù)指標(biāo)掌握企業(yè)運(yùn)營情況反惕,生成日?qǐng)?bào)、月報(bào)或周報(bào)的形式知道企業(yè)生產(chǎn)演侯。
原因分析
企業(yè)通過現(xiàn)狀分析的結(jié)果姿染,展開原因分析,對(duì)企業(yè)內(nèi)部進(jìn)行優(yōu)化調(diào)整蚌本。
預(yù)測(cè)分析
對(duì)企業(yè)未來的發(fā)展趨勢(shì)做預(yù)測(cè)盔粹,對(duì)企業(yè)提供參考和決策依據(jù)隘梨。
分析流程(技術(shù))
明確目標(biāo)與思路
數(shù)據(jù)收集
數(shù)據(jù)處理
數(shù)據(jù)分析
數(shù)據(jù)可視化
分析工具
Python
R
MATLAB
Java
Scala
numpy
數(shù)組的創(chuàng)建
np.array(object,stype=None,ndim=0)
object:可以是列表或元組
dtype:數(shù)組元素的數(shù)據(jù)類型
ndim:創(chuàng)建數(shù)組的最小維度
特殊數(shù)組的創(chuàng)建:
全0數(shù)組:zeros(shape,dtype.dtype=float)
shape:以元組形式存儲(chǔ)的維度信息
全1數(shù)組:ones(shape,dtype.dtype=float)
對(duì)角線為1的數(shù)組:eye(N, M=None, k=0)
N:行數(shù)
M:列數(shù)
k:對(duì)角線為1起始索引(列索引)
等差數(shù)組:
arange([start,] stop[, step,], dtype=None)
start: 起始值
stop:結(jié)束值(不包括)
step:步長
linspace(start,
? ? stop,
? ? num=50,
? ? endpoint=True,
? ? retstep=False,
? ? dtype=None,
? ? axis=0,)
start:起始值
stop:結(jié)束值(默認(rèn)包括)
num:數(shù)組元素個(gè)數(shù)
endpoint:當(dāng)值包括結(jié)束值舷嗡,當(dāng)值為False時(shí)不包括結(jié)束值
retstep:是否顯示公差轴猎,值為TUR額顯示公差
axis:軸,值為0時(shí)對(duì)縱向進(jìn)行操作进萄,值為1時(shí)對(duì)橫向進(jìn)行操作
等比數(shù)組:
logspace(start,
? ? stop,
? ? num=50,
? ? endpoint=True,
? ? base=10.0,
? ? dtype=None,
? ? axis=0,)
base:基數(shù)捻脖,logspace(0,9,10)表示從10的0次方到10的9次方之間產(chǎn)生10個(gè)等比數(shù)值,默認(rèn)基數(shù)為10中鼠,修改基數(shù)為a,表示a的0次方到a的9次方可婶。
隨機(jī)數(shù)組:
給定整數(shù)范圍生成指定個(gè)數(shù)的隨機(jī)數(shù)組
np.random.randint(low, high=None, size=None, dtype=int)
low:最小值
gigh:最大值
size:元素個(gè)數(shù)
0-1之間指定個(gè)數(shù)的隨機(jī)數(shù)組
np.random.random(size)
size:元素個(gè)數(shù)
常用屬性
ndim:數(shù)組的秩(維度)
shape:元組顯示的維度信息
size:數(shù)組元素個(gè)數(shù)
dtype:數(shù)組元素的數(shù)據(jù)類型
常用操作
切片
一維數(shù)組
數(shù)組名[start:stop:step]:左閉右開
二維數(shù)組
數(shù)組名[行切片,列切片]
索引
普通索引
一維數(shù)組
數(shù)組名[索引值]
二維數(shù)組
數(shù)組名[行索引援雇,列索引]
整數(shù)索引:從數(shù)組中根據(jù)行矛渴、列索引值找到多個(gè)元素
數(shù)組名[(多個(gè)行索引),(多個(gè)列索引)]
布爾索引:根據(jù)條件查找元素
數(shù)組名[結(jié)果為布爾的表達(dá)式]
花式索引:可改變順序查找行列數(shù)組值
數(shù)組名[np,ix_([行索引],[列索引])]
常用函數(shù)
基礎(chǔ)操作函數(shù)
astype(dtype):將數(shù)組轉(zhuǎn)換數(shù)據(jù)類型
reshape(shape):對(duì)數(shù)組進(jìn)行維度調(diào)整
transpose(arr):將數(shù)組進(jìn)行翻轉(zhuǎn),行列調(diào)換
concatenate((arr1,arr1,...),axis):將多個(gè)數(shù)組按照指定軸進(jìn)行連接
split(arr,num,axis):將數(shù)組按照指定軸和num切割份數(shù)進(jìn)行切分惫搏,
num:值為整數(shù)時(shí)具温,等分?jǐn)?shù)組
num:值為列表時(shí),按照索引切割數(shù)組
統(tǒng)計(jì)函數(shù)
sum(arr,axis=0):數(shù)組求和
mean(arr,axis=()):數(shù)組求算術(shù)平均值
averange(arr,weight):數(shù)組求加權(quán)平均值筐赔,weight(權(quán)重)
median(arr,axis=0):數(shù)組中位數(shù)
var(arr,axis):方差
std(arr,axis):標(biāo)準(zhǔn)差
min(arr,axis=0):最大值
min(arr,axis=0):最小值
ptp(arr,sxis=0):極差铣猩,最大值和最小值的差
cumprom(arr,axis=0):累計(jì)求和
cumprod(arr,axis=0):累計(jì)求積
查看數(shù)據(jù)的波動(dòng)情況(離散程度)
排序函數(shù)
sort(arr,axis=-1):對(duì)數(shù)組進(jìn)行升序排序
argsort(arr,axis):對(duì)數(shù)組排序顯示元素索引值
argmax(arr,axis):顯示數(shù)組中最大值所在的索引
argmin(arr,axis):顯示數(shù)組中最小值所在的索引
篩選函數(shù)
where(condition,[x,y])
1.where(c,x,y):c為條件,當(dāng)滿足條件時(shí)茴丰,從x數(shù)組中取值达皿,不滿足條件,從y中取值贿肩。
2.where(c):從數(shù)組中找出滿足條件c的元素峦椰,并顯示元素所在的索引
all(condtion):當(dāng)數(shù)組中所有元素都滿足條件時(shí),顯示為True汰规,否則為False
any(condtion):當(dāng)數(shù)組中只要有滿足條件的元素是顯示True们何,否則False
in1d(arr1,arr2):判斷arr1中與arr2中是否有重復(fù)值,并顯示重復(fù)值位置
pandas
pandas簡(jiǎn)介
pandas:python的數(shù)據(jù)分析包
特點(diǎn)
基于numpy的一種工具控轿,為數(shù)據(jù)分析業(yè)務(wù)而創(chuàng)建的。
納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型拂封,提供了高效操作大型數(shù)據(jù)集所需的工具
提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法
安裝和導(dǎo)入
pip install pandas
import pandas as pd
pandas數(shù)據(jù)結(jié)構(gòu)
Series
簡(jiǎn)介
ndarray對(duì)象的升級(jí)茬射,是一個(gè)可以由用戶自定義索引的一維數(shù)組對(duì)象,由index和value兩部分組成冒签。
創(chuàng)建方法
Series(data,index,dtype,copy)
data:可以是列表在抛、元組、字典或ndarray對(duì)象
index:索引列表
dtype:數(shù)據(jù)數(shù)據(jù)類型
copy:當(dāng)值為False時(shí)萧恕,用于復(fù)制數(shù)據(jù)
索引
顯示索引
s[索引值]或s.iloc[索引值]
隱式索引
s[索引值]或s.loc[索引值]
當(dāng)索引值和索引名有相同名稱時(shí)刚梭,優(yōu)先顯示顯式索引內(nèi)容
切片
隱式切片
s[索引名start:索引名stop:setp]
s.iloc[索引名start:索引名stop:setp]
左閉右開
顯式切片
s[索引名start:索引名stop:setp]
s.loc[索引名start:索引名stop:setp]
左閉右閉
DataFarme
簡(jiǎn)介
是二維數(shù)據(jù)結(jié)構(gòu)肠阱,即數(shù)據(jù)行、列的表格方式排列朴读。由行索引index屹徘、列索引columns和數(shù)據(jù)values組成。
創(chuàng)建方法
DataFrame(data,index,columns,dtype,copy)
data:列表衅金、元組噪伊、字典、ndarry對(duì)象氮唯、csv數(shù)據(jù)鉴吹、sql數(shù)據(jù)、excel數(shù)據(jù)及html表格數(shù)據(jù)惩琉。
字典:鍵是列索引豆励,值以列表形式存儲(chǔ)的列下面的值
csv數(shù)據(jù):pd.read_csv('文件名',encoding瞒渠,usecols良蒸,skiprows)
encoding:編碼方式
usecols:從表格中選擇哪些列,元組形式
skiprows:從表格中跳過幾行
SQL數(shù)據(jù)
1.import pymysql
2.conn =pymysql.Connect(host,port,user,password,db,charset)
3.sql = ";"
4.read_sql(sql,conn)
index:行索引列表
columns:列索引列表
DataFrame(data,index,columns,dtype,copy)
常用屬性
T:行列轉(zhuǎn)換
index:獲取行索引
colimns:獲取列索引
values:獲取數(shù)據(jù)在孝,將DataFrame數(shù)據(jù)轉(zhuǎn)換為ndarry
ndim:獲取維度
shape:獲取維度信息
size:獲取元素個(gè)數(shù)
dtype:獲取元素的數(shù)據(jù)類型
head(n):獲取前n行數(shù)據(jù)
tail(n):獲取后n行數(shù)據(jù)
索引
列索引
df[’列索引名‘]或df.列索引名
注意:不能寫df[列索引值]
行列索引
先列后行
df[列索引][行索引]
df[列索引].loc/.iloc[行索引]
先行后列
df.loc/.iloc[行索引][列索引]
行索引
df.iloc[行索引值]或df.loc['行索引名']
注意:iloc和loc不能省
切片
df[行索引起始值:行索引結(jié)束值:步長]
注意:只做行切片诚啃,篩選部分列做列索引。
常用方法
sum(axis):分別對(duì)行私沮、列進(jìn)行求和始赎,結(jié)果為Series
cumsum(axis):累計(jì)求和,結(jié)果是DataFrame
prod(axis):對(duì)行仔燕、列進(jìn)行求積
cumprod(axis):累計(jì)求積
max(axis)/min(axis):最大值和最小值
var(axis)/std(axis):方差和標(biāo)準(zhǔn)差
mean(axis):求算數(shù)平均值
median(axis):求中位數(shù)
count(axis):非空值觀測(cè)
mode(axis):眾數(shù)造垛,模值,數(shù)據(jù)樣本中頻度最高的數(shù)晰搀。
describe(axis):數(shù)據(jù)進(jìn)行匯總統(tǒng)計(jì)
排序
sort_index(axis=0,
level=None,
ascending,inplace: 'bool' = False,
kind: 'str' = 'quicksort',
na_position: 'str' = 'last',
ignore_index: 'bool' = False)
axis:軸五辽,當(dāng)值為0時(shí),進(jìn)行縱向操作外恕,當(dāng)值為1時(shí)杆逗,進(jìn)行橫向操作
level:層次化索引,按哪個(gè)層次的索引進(jìn)行排序
axcending:排序方式鳞疲,當(dāng)值為False時(shí)降序排序
kind:排序類型罪郊,默認(rèn)快速排序法
na_position:當(dāng)索引中有NaN時(shí),它的顯示位置尚洽,默認(rèn)顯示在最后
ignore_index:對(duì)索引進(jìn)行重新排序(索引)
sort_values(axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last',
ignore_index=False)
按值排序
數(shù)據(jù)的排序
concat(object,axis,keys,ignore_index,join)
object:對(duì)多張表對(duì)象進(jìn)行連接悔橄,并將表存儲(chǔ)為列表或元組
axis:軸,=0行連接,=1列連接
keys:為多張表定義表名癣疟,吧多個(gè)表名存儲(chǔ)在列表或元組中
ignore_index:當(dāng)值為True時(shí)為連接后的表重置索引
join:表連接方式挣柬,默認(rèn)outer,只有inner和outer
mere(left,right,on,how,left_on,right_on,left_index,right_index,sffixes)
left睛挚,right:連接的左表和右表
on:指定兩張表連接的列索引
how:連接方式
inner:內(nèi)連接(默認(rèn))
outer:外連接
left:左連接
right:右連接
cross:笛卡爾連接
left_on.right_on:當(dāng)兩張表中某個(gè)列索引含義相同但名稱不同時(shí)邪蛔,人為定義這兩個(gè)參數(shù)可將表按照這兩個(gè)索引進(jìn)行連接。
left_index,right_index:當(dāng)兩個(gè)表中無相同列索引時(shí)要將兩表連接竞川,設(shè)置這兩個(gè)參數(shù)值為True就可以進(jìn)行連接店溢。
suffixes:為兩個(gè)表相同列索引定義表名,必須與on同時(shí)使用
Pane1
maplotlib
數(shù)據(jù)清洗
機(jī)器學(xué)習(xí)sklearn
資料領(lǐng)取請(qǐng)移步公眾號(hào)“程序員森芋”