Python大數據分析之數據分析


# -*- coding: utf-8 -*-

#1,基本統計分析
==================
常用統計函數:
size:計數,不需要括號
sum():求和
mean():均值
var():方差
std():標准差
==================

import pandas as pd
df = pd.read_excel(r'd:\rz.xlsx',sheet_name='Sheet3')

print(df.數分.describe())
print(df.describe())
print(df.解幾.size)
print(df.解幾.sum())
print(df.解幾.var())

import numpy as np
print(np.average(df['數分']))  #用numpy的ave函數求均值
print(df.mode())  #計算眾數


#2,分組分析
==================
根據分組字段將分析對象划分成不同的部分,以對比分析各組之間差異性。
df.groupby(by=['分類1','分類2',...])['被統計的列'].agg({列名1:統計函數1,
         列名2:統計函數2,...})
by表示按列進行分組,常用統計函數有size計數,sum求和,mean求均值
==================

import numpy as np
from pandas import read_excel
df = read_excel(r'd:\rz.xlsx',sheet_name='Sheet3')
#英語、體育、軍訓列的分數必須為int,否則結果會空
print(df.groupby(by='班級')['英語','體育','軍訓'].mean())
print(df.groupby(by=['班級','性別'])['軍訓'].agg(
        {'總分':np.sum,
         '人數':np.size,
         '平均值':np.mean,
         '方差':np.var,
         '標准差':np.std,
         '最高分':np.max,
         '最低分':np.min}))

#3,分布分析
#根據分析的目的,將數據進行等距或不等距分組,研究各組分布規律。
import pandas as pd
import numpy
df = pd.read_excel(r'd:\rz.xlsx',sheet_name='Sheet3')
df['總分']=df.英語+df.體育+df.軍訓+df.數分+df.高代+df.解幾
#將數據分為3段
bins=[min(df.總分)-1,400,450,max(df.總分)+1]
#給3段數據貼標簽
labels=['400以下','400到450','450以上']
df['總分分層']=pd.cut(df.總分,bins,labels=labels)
print(df)


#4,交叉分析
==================
分析兩個或以上分組變量之間的關系,以交叉表形式進行變量間關系的對比分析。
pivot_table(values,index,columns,aggfunc,fill_value),將數據列透視為新表。
values表示透視新表中的值,可選參數
index透視表中的索引,必選參數
columns透視表中的列,用來分割數據,可選參數
aggfunc統計函數,可選參數
fill_value表示NA值的統一替換,可選參數
==================
#接上面代碼
#按index進行分組,透視所有int列
print(df.pivot_table(index=['班級','姓名'])) 
#透視指定列
print(df.pivot_table(['軍訓','英語','體育'],index=['班級','姓名']))
#按index進行分組,透視values列,列名按性別分開顯示
print(df.pivot_table(values=['總分'],
                     index=['總分分層'],
                     columns=['性別'],
                     aggfunc=[numpy.size,numpy.mean]))


#5,結構分析
#在分組分析及交叉分析的基礎之上,計算各組成部分所占的比重。
df_pt=df.pivot_table(values=['總分'],
                     index=['班級'],
                     columns=['性別'],
                     aggfunc=[numpy.sum])
print(df_pt)
print("!!!!",df_pt.sum())    #默認按行合計
print("@@@@",df_pt.sum(axis=1))  #按列合計 
print("####",df_pt.div(df_pt.sum(axis=1),axis=0))  #按列占比
print("$$$$",df_pt.div(df_pt.sum(axis=0),axis=1))  #按行占比


#6,相關分析
==================
研究現象之間是否存在某種依賴關系,並對具有依賴關系的現象探討相關方向和程度
DataFrame.corr() 計算每列兩兩之間的相似度,返回DataFrame
Series.corr() 計算該序列與傳入的序列之間的相關度,返回一個數值型,大小為相關度
==================

import pandas as pd
import numpy as np
df = pd.read_excel(r'd:\rz.xlsx',sheet_name='Sheet3')
print(df['高代'].corr(df['數分']))
print(df.loc[:,['英語','體育','軍訓','解幾','數分','高代']].corr())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM