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数据分析项目实战的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门