數據分析數據可視化(四)

1.基本統計分析:一般統計最小值,第一四分位值,中值,第三四分位置。最大值
常用統計指標:計數,求和,平均值,方差,標準差
描述性統計分析函數:describe()
常用的統計函數
在這裏插入圖片描述

import pandas 
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.1\data.csv')
print(data)
print(data.score.describe())
#count     13.000000
#mean     121.076923
#std       12.446295
#min       96.000000
#25%      115.000000
#50%      120.000000
#75%      131.000000
#max      140.000000


#如果要分統計也行
print(data.score.size)
#13

2.分組統計
分組統計函數:groupby(by=[分組1,分組2.。。】)
【統計列1,統計列2】
.agg({統計列別名1:統計函數1.。。。})
解釋
by:用於分組的列
中括號:用於統計的列
agg:統計別名顯示統計值的名稱
在這裏插入圖片描述

import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.1\data.csv')
data['score2']=data['score']*data['score']
data.groupby(by=['class'])['score'].agg({
        '總分':numpy.sum,
        '人數':numpy.size,
        '平均值':numpy.mean,
        '方差':numpy.var,
        '標準差':numpy.std,
        }
        )
#        總分  人數     平均值          方差        標準差
#class                                        
#一班     635   5  127.00   71.000000   8.426150
#三班     484   4  121.00  104.666667  10.230673
#二班     455   4  113.75  290.250000  17.036725

a=data.groupby(by=['class','name'])['score','score2'].agg({
        numpy.sum,
        numpy.size
        }
        )
這樣拿班級和姓名分組得到這個:
           score      score2     
             sum size    sum size
class name                       
一班    朱    122    1  14884    1
      朱志    120    1  14400    1122    1  14884    1
      鄭麗    140    1  19600    1
      郭傑    131    1  17161    1
三班    莊藝    119    1  14161    1
      方偉    136    1  18496    1
      方小    114    1  12996    1115    1  13225    1
二班    林良    135    1  18225    196    1   9216    1119    1  14161    1
      黃志    105    1  11025    1
      
      res=data.groupby(by=['class'])['score'].agg({
        '總分':numpy.sum,
        '人數':numpy.size,
        '平均值':numpy.mean,
        '方差':numpy.var,
        '標準差':numpy.std,
        }
        )
print(res.index)
#Index(['一班', '三班', '二班'], dtype='object', name='class')

print(res.columns)
#Index(['總分', '人數', '平均值', '方差', '標準差'], dtype='object')
print(res['平均值'])
class
一班    127.00
三班    121.00
二班    113.75

各種引用還是看具體需求

3.分佈分析:根據分析目的,將數據等距或者不等距的分組,進行研究各分組顧慮的一種分析方法。

import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.3\data.csv')
bins=[min(data.年齡)-1,20,30,40,max(data.年齡)+1]
labels=['20歲以下','20到30歲','30到40歲','40歲以上']
age=pandas.cut(data.年齡,bins,labels=labels)
data['年齡分層']=age
print(data.groupby(by=['年齡分層'])['年齡'].agg({'人數':numpy.size}))

           人數
年齡分層         
20歲以下    2061
203046858
30408729
40歲以上    1453

4.交叉分析:通常用於分析兩個或兩個以上分組變量之間的關係,以交叉表形式進行變量間關係的對比分析;

pivot_table(values,index,colums,aggfunc,fill_value)
value:數據透視表中的值
index:數據透視表中的行
columns:數據透視表中的列
aggfunc:統計函數
fill_value:NA值的統一替換
返回的是數據透視import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.4\data.csv')
bins=[min(data.年齡)-1,20,30,40,max(data.年齡)+1]
labels=['20歲以下','20到30歲','30到40歲','40歲以上']
age=pandas.cut(data.年齡,bins,labels=labels)
data['年齡分層']=age
r1=data.pivot_table(
        values=['年齡'],
        index=['年齡分層'],
        columns=['性別'],
        aggfunc=[numpy.size,numpy.mean]     
        )
        下面得到數據透視表
        size              mean           
          年齡                年齡           
性別         女      男          女          男
年齡分層                                     
20歲以下    111   1950  18.972973  19.321026
20302903  43955  25.954874  25.746149
3040735   7994  33.213605  33.084939
40歲以上    567    886  51.691358  49.943567

表的結果如果有兩個數據透視表a,b可以用a.join(b)合併,必須ivalues,ndex和columns一樣

5.結構分析:在分組的基礎上,計算各組成部分所佔的比重,進而分析總體的內部特徵的一種分析方法。
axis參數說明:0是按列計算,1是按行計算。
運算(數據框的外運算函數) 註釋
add 加sub 減multiply 乘div 除

運算(數據框的內運算函數) 註釋
sum 求和mean 均值var 方差sd 標準差

import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.5\data.csv')
data2=data.pivot_table(
        values=['月流量(M)'],
        index=['省份'],
        columns=['通信品牌'],
        aggfunc=[numpy.sum]
        )
print(data2,data2.sum())
          sum                    
       月流量(M)                    
通信品牌      全球通      動感地帶       神州行
省份                               
上海    19468.8  356637.9  584389.2

......
青海    29473.6  395802.3  508992.0
              通信品牌
sum  月流量(M)  全球通      1216533.6
             動感地帶    11825462.3
             神州行     18385315.7
dtype: float64




print(data2.sum(axis=1),data2.sum(axis=0))
按行運算和按列運算。默認爲0.
省份
上海     960495.9
雲南     946952.9
.......
寧夏     923295.9

黑龍江    910761.4
dtype: float64              通信品牌
sum  月流量(M)  全球通      1216533.6
             動感地帶    11825462.3
             神州行     18385315.7
dtype: float64



print(data2.div(data2.sum(axis=1),axis=0))
      sum                    
        月流量(M)                    
通信品牌       全球通      動感地帶       神州行
省份                                
上海    0.020270  0.371306  0.608424
雲南    0.044443  0.407948  0.547609
內蒙古   0.033975  0.367371  0.598654
北京    0.035174  0.388562  0.576265

按行求和爲1


import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.5\data.csv')
data2=data.pivot_table(
        values=['月流量(M)'],
        index=['省份'],
        columns=['通信品牌'],
        aggfunc=[numpy.sum]
        )
print(data2.div(data2.sum(axis=0),axis=1))
  sum                    
        月流量(M)                    
通信品牌       全球通      動感地帶       神州行
省份                                
上海    0.016004  0.030158  0.031786
雲南    0.034595  0.032667  0.028205
內蒙古   0.025725  0.028616  0.029993
北京    0.027877  0.031680  0.030220
.。。。。
臺灣    0.030006  0.030187  0.029591
吉林    0.020698  0.030346  0.030499

按列求和爲1

6.相關分析:是研究現象之間是否存在某種依存關係,並對具體有依存關係的現象探討其相關方向及相關程度,是研究隨機變量之間的相關關係的一種統計方法。
相關係數:可以描述定量變量之間的關係:
0<=|r|<0.3 低度相關
0.3<=|r|<0.8 中度相關
0.8<=|r|<1 高度相關

相關分析函數:
DataFrame.corr()
Series.corr(other)
如果數據框調用corr方法,那麼將會計算每個列兩兩之間的相似度
如果是序列調用,那麼只是計算該序列與傳入序列之間的相關度

import pandas,numpy
data=pandas.read_csv('D:\BaiduNetdiskDownload\8\8.6\data.csv')
print(data)
print(data['人口'].corr(data['文盲率']))
#0.10762237339473261擬合程度不高啊
print(data.loc[:,['網上購物率','文盲率','人口']].corr())
          網上購物率       文盲率        人口
網上購物率  1.000000 -0.702975 -0.343643
文盲率   -0.702975  1.000000  0.107622
人口    -0.343643  0.107622  1.000000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章