Python数据分析项目实战

2021/6/9 20:29:22

本文主要是介绍Python数据分析项目实战,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

之前在知乎上刷到一篇使用Excel完成数据分析的文章,于是我想到用Python来进行同样的数据分析。

原Excel数据分析文章地址:https://zhuanlan.zhihu.com/p/47707508

使用到Python的numpy、pandas、motplotlib

代码及结果如下:

//引入相应模块
import csv
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from scipy import stats
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
%matplotlib inline

//读取数据并进行重命名
data = pd.read_csv('appendix.csv')
data.rename(columns = ({'Institution':'课程持有机构',
                        'Course Number':'课程编号ID',
                        'Launch Date':'上线日期',
                        'Course Title':'课程名称',
                        'Instructors':'讲师',
                       'Course Subject':'课程主题',
                       'Year':'课程持续时间',
                       'Honor Code Certificates':'是否提供认证',
                       'Participants (Course Content Accessed)':'学生人数',
                       'Audited (> 50% Course Content Accessed)':'完成50%以上课程的人数',
                       'Certified':'拿到认证的人数',
                       '% Audited':'完成50%课程人数占比',
                       '% Certified':'认证人数占比',
                       '% Certified of > 50% Course Content Accessed':'认证人数在完成50%课程人数中占比',
                       '% Played Video':'播放视频人数占比',
                       '% Posted in Forum':'粘贴到论坛占比',
                       '% Grade Higher Than Zero':'分数高于0的百分比',
                       'Total Course Hours (Thousands)':'总课程时长小时数',
                       'Median Hours for Certification':'拿到认证小时数的中位数',
                       'Median Age':'用户年龄中位数',
                       '% Male':'男性占比',
                       '% Female':'女性占比',
                       '% Bachelor\'s Degree or Higher':'用户学士学历及以上占比'}),inplace = True)


//数据清洗及数据去重、填充缺失值
data.drop_duplicates()
data.drop_duplicates()
data.fillna(method='ffill')

生成图表分析学生与课程之间的关系 

//透视表
Popular_Courses0 = data.pivot_table(index='课程名称',values=['学生人数'],aggfunc='sum')
Popular_Courses = Popular_Courses0.sort_values(by='学生人数',ascending=False)
Popular_Courses.head(5)

//柱状图
Popular_Subject = data.pivot_table(index='课程主题',values=['学生人数'],aggfunc='sum')
Popular_Subject.sort_values(by='学生人数',ascending=False)
Popular_Subject.plot(kind='barh')

分析生成图表如下:

 借助图表查看课程与课程持有机构的关系:

Institution_Subject = pd.crosstab(data.课程持有机构,data.课程主题,margins=True)
display(Institution_Subject)
Institution_Subject.plot(kind='bar',stacked=True,rot=0)

Institution_Subject_Number = data.pivot_table(index='课程主题',columns='课程持有机构',values=['学生人数'],aggfunc='size')
Institution_Subject_Number.plot(kind='barh',stacked=True,rot=0)

 生成图表如下:

 

计算统计量,分析该网站用户特征、学习情况等:

#定义计算列
a=data['完成50%课程人数占比']
b=data['认证人数占比']
c=data['用户年龄中位数']


a1=a.sort_values(ascending=False)
b1=b.sort_values(ascending=False)
c1=c.sort_values(ascending=False)

zxd_95=1.968177896

wr0={'完成50%课程人数占比':[a.mean(),a.sem(),a.median(),stats.mode(a)[0][0],
                             a.std(),a.var(),a.kurt(),a.skew(),
                             a.max()-a.min(),a.min(),a.max(),a.sum(),
                             a.count(),a1.values[4],a1.values[-5],a.sem()*zxd_95],
     '认证人数占比':[b.mean(),b.sem(),b.median(),stats.mode(b)[0][0],
                             b.std(),b.var(),b.kurt(),b.skew(),
                             b.max()-b.min(),b.min(),b.max(),b.sum(),
                             b.count(),b1.values[4],b1.values[-5],b.sem()*zxd_95]}
wr=pd.DataFrame(wr0,columns=['完成50%课程人数占比','认证人数占比'],index=['平均数','标准误差','中位数','众数','标准差','方差','峰度','偏度','区域','最小值','最大值','求和','观测数','最大(5)','最小(5)','置信度(95.0%)'])
display(wr)


t1=data[['完成50%课程人数占比','认证人数占比']]
t1.boxplot()


yh0={'用户年龄中位数':[c.mean(),c.sem(),c.median(),stats.mode(c)[0][0],
                             c.std(),c.var(),c.kurt(),c.skew(),
                             c.max()-c.min(),c.min(),c.max(),c.sum(),
                             c.count(),c1.values[4],c1.values[-5],c.sem()*zxd_95]}
yh=pd.DataFrame(yh0,columns=['用户年龄中位数'],index=['平均数','标准误差','中位数','众数','标准差','方差','峰度','偏度','区域','最小值','最大值','求和','观测数','最大(5)','最小(5)','置信度(95.0%)'])
display(yh)


data[['男性占比','女性占比']].agg([np.mean])


data[['用户学士学历及以上占比']].agg([np.mean])

 分析生成图表如下:

            

箱线图: 

 

            



这篇关于Python数据分析项目实战的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程