1、Python安装包下载
进入Python官网至https://www.python.org/downloads,选择适合自己电脑版本的Python安装包进行下载。
Python安装包下载
2、Python安装
进入自定义安装,勾选配置环境变量,选择安装路径进行安装
Python安装图 1
Python安装图 2
Python安装图 3(安装成功)
3、Python安装成功测试
命令行下输入python -V查看版本号(注意V为大写英文字母);运行Python,输入”hello”的字符
查看版本号;输出“hello”
- PyCharm安装
- PyCharm安装包下载
进入PyCharm官网http://www.jetbrains.com/pycharm/download/#section=windows下载安装包
PyCharm安装包
2、PyCharm安装
选择安装路径
Pycharm安装 1
勾选 64-bit launcher、Add launcher dir to the PATH、.py 选项
PyCharm安装
PyCharm安装
PyCharm安装完成
3、创建Python文件
点击 Create New Project,新建项目
创建Python文件 2
Location为项目路径,Base interpreter填Python下的python.exe(一般有环境变量自动生成)
创建Python文件 3
在项目管理中,将鼠标放在项目资源上,鼠标右键-->New-->Python File,输入Python文件名新建
创建Python文件 4
新建成功cc.py
创建Python文件 5
- 第三方库安装
标准库:指Python自带无需进行其他的下载和安装
第三方库:指Python不自带,需要进行其他的下载和安装
- 需要下载的第三方库
Numpy
Pandas
Matplotlib
Seaborn
- 安装第三方库
点击File-->Settings,点开Project:当前项目,选择下面的Project Interpreter,点击右边的下加号
安装第三方库 1
在收缩框内输入第三方库名,搜索有结果后点击左下角Install Package进行安装,然后依次完成所需第三方库的安装
安装第三方库 2
安装第三方库 3(所有库安装完成)
如果出现No information available提示,请检查网络,如网络没问题,可以通过将pip的源更换为阿里源解决
更换阿里源(pip)
新建文件pip.ini
其中写入
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
在C:\Users\用户名\AppData\Roaming 目录下新建pip文件夹,将pip.ini文件放入
3、测试第三方库是否安装成功
在命令行中输入import numpy、import pandas、import matplotlib、import seaborn,中间每输一个回车一次,出现“>>>”表示安装成功
测试第三方库安装成功
四、对数据的理解
使用XLS打开
数据 2
Datetime:时间
Season:季度
Holiday:节假日(0为否,1为真)
Workingday:工作日(0为否,1为真)
Casual:非会员
Registered:会员
Count:总数
对第一行数据的解读:第一季度,某个时间段,非节假日,非工作日,非会员骑行人数为3,会员骑行人数为13,总人数为16
五、数据读取和查看
创建Python文件,写入下面的代码
数据读取和查看 1(代码)
遇到错误:FileNotFoundError: [Errno 2] File b'train.cvs' does not exist: b'train.cvs'
错误原因一直找不到看了很多种方法绝对路径只读取消转义后来发现把文件后缀写错尬CSV写错成CVS
运行Python程序,查看运行结果
数据读取和查看 2
数据读取和查看 3
2019年7月9号
- 课前问题
问题:
(1)从“不同季节骑行人数”图中,为什么春天骑行人数最少?
(2)在“一天不同时间骑行人数”图中,为什么从1就到10?
(3)“一天不同时间骑行人数”图如何把时间摆正?
二、知识补充
数据分析过程
数据采集-->数据处理-->数据分析-->数据可视化
数据的采集方式有:爬虫、问卷等
数据处理的目的:为了得到高质量的数据,以便进行有效地分析
数据处理:1、数据的提取 2、数据转换3、数据清理(缺失值、异常值)
数据处理中注意:1、检查空值(缺失值),使用bikedate.describe(),bikedate.describe()的作用是查看所有非空的值。2、检查异常值,箱型图检查异常值。
Python五大类型:
1、数字类型numbers
2、字符串String
3、列表List
4、元组Tuple
5、字典Dictionary
Pandas三种数据结构:
1、系列
2、面板
3、数据帧/框(其中导入的数据就属于数据帧/框)
三、所需学习
1、列表(List)
1.1创建列表
(1)用[]括起来;
(2)各个元素之间用逗号隔开;
(3)各个元素类型可不同;
列表 1
1.2访问列表
访问格式:列表名[下标] 和 列表名[下标:下标]
列表 2
列表 3
1.3更改列表
增加元素:append()
insert()
删除元素:pop()
del列表名[下标]
修改元素:列表名[下标] = 修改值
列表 4
列表 5
2、内建函数split()
制定分隔符对字符串进行切片,返回字符串列表
String.split() 默认以空格分隔
String.split(‘分隔符’)
内建函数split()
3、普通函数与匿名函数
普通函数定义规则
1、函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
2、任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3、函数内容以冒号起始,并缩进。
4、Return[expression]结束函数,选择地返回一个值给调用方,不带表达式的return相当于返回None
函数 1
匿名函数
1、lambda只是一个表达式,函数体比def简单。
2、lambda的主体是一个表达式,而不是一个代码块,仅仅能在lamdba表达式中封装有限的逻辑。
3、定义格式:函数名=lambda变量名:表达式
函数 2
- 内建函数apply()
apply():将函数应用到由各列或行形成的一维数组上
- 普通函数function
apply(function,*args,**kwargs)
- 匿名函数lambda
apply(lambda 变量:表达式)
- Python中的datetime模块
datetime模块主要用来处理时间日期
datetime.datetime.now()返回当前时间
datetime.datetime.strptime(string,foemat)str格式转datetime
其中,string表示时间字符串,format表示格式化字符串
datetime.datetime.weekday()将datetime格式的日期转化为对应星期值
datetime.datetime.month将datetime格式的日期转化为对应月份值
- Python中的calender模块
Calendar模块,即日历模块,提供了对日期的一些操作方法,如生成日历的方法
Calendar模块的两大属性如下:
Calendar.day_name #将星期的数字值修改为英文全称
Calendar.month_name #将月份的数字值修改为英文全称
通过改变上述属性,可以修改显示星期、月份的数字
- 应用
导入如数据train.csv
导入数据
数据提取
增加date列,date列为日期,数据从datetime中提取,使用apply对datetime每一行调用匿名函数,匿名函数使用内建函数split()空格分隔,取第一个元素
数据提取 1
增加hour列,hour列为小时,数据从datetime中提取,使用apply对datetime每一行调用匿名函数,匿名函数使用内建函数split()冒号’:’分隔,取第二个元素
数据提取 2
增加weekday列,weekday列为英文星期名称,数据从datetime中提取,使用apply对datetime每一行调用匿名函数,匿名函数使用datetime.strptime()将datetime列中的String值转换为datetime对象,再使用datetime的weekday()转换为对应星期值,后使用calendar.day_name[]将对应星期值转换为对应英文值
数据提取 3
增加month列,month列为英文月份名称,数据从datetime中提取,使用apply对datetime每一行调用匿名函数,匿名函数使用datetime.strptime()将datetime列中的String值转换为datetime对象,再使用datetime的month转换为对应月份值,后使用calendar.month_name[]将对应月份值转换为对应英文值
数据提取 4
新增的date、hour、weekday、month列
新增列
Map()会根据提供的函数对指定序列做映射。
利用map()将季度转换成对应季节英文值
季度英文转换 1
季度英文转换 2
五、绘图
利用循环将hour、weekday、month、season、holiday、workingday列转换为category类型
循环修改类型
修改结果是为了方便绘图使用
将在datetime列上为True的删除,这里相当于删除datetime列
删除datetime列
设置画布,绘制“骑行人数”、“不同季节骑行人数”、“一天不同时间骑行人数”、“工作日骑行人数”图,“骑行人数”图:纵坐标count,横坐标无;“不同季节骑行人数”图:纵坐标count,横坐标season;“一天不同时间骑行人数”图:纵坐标count,横坐标hour;“工作日骑行人数”图:纵坐标count,横坐标workingday;
使用seaborn中的boxplot绘制,data指定数据来源,y指定纵坐标,x指定横坐标,orient指定放置属性(v竖直放置,h水平放置),ax指定子图位置
绘图 1
设置子图纵坐标标签、横坐标标签、标题
ylabel为纵坐标标签,xlavel为横坐标标签,title为标题
绘图 2
生成图片,并显示
绘图 3
绘图结果
剔除异常数据,将(count - count列平均值)小于等于三倍标准差的count行保存到bikedata1
剔除异常结果
保存数据
保存数据
2019年7月10号
首先对于昨天的问题的解答:
刚开始考虑是不是包的函数的问题后来发现网上没有这种问题,开始从代码考虑,分析数据发现问题是经过切割应该数据是字符串形式那么肯定从第一个字符开始排序
问题数据
只需要把类型转换为整型就好
处理方式
- 绘制“不同月份骑行人数”图
Sn.boxplot箱型图、Sn.barplot柱形图、Sn.pointplot点图
Pd.DataFrame()创建数据帧/框
Groupby(分类对象)进行数据的分类
.reset_index()重置横坐标
.sort_values(by=”排列对象”,ascending=False降序/True升序)
对“月份”进行分类,并计算各个月份的人数平均值,创建数据帧/框,用于绘制“不同月份骑行人数”图
绘图代码 1
不同月份骑行人数图
- 绘制“一周内不同时间的骑行人数”图
对“小时”和“星期”进行分类,求分类后的平均值,创建数据帧/框,绘制“一周内不同时间的骑行人数”图
绘图代码 2
一周内不同时间的骑行人数图
- 绘制“不同季节不同时间的骑行人数”图
对“小时”和“季节”进行分类,求分类后的平均值,创建数据帧/框,绘制“不同季节不同时间的骑行人数”图
绘图代码 3
不同季节不同时间的骑行人数图
- 绘制“不同用户在不同时间内的骑行人数”图
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
将列名转换为列数据(columns name -> column values)
frame:要处理的数据集。
id_vars:不需要被转换的列名。
value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了。
var_name和value_name是自定义设置对应的列名。
col_level :如果列是MultiIndex,则使用此级别。
对“casual”和“registered”进行列名转为列数据的操作,对“hour”和“variable”进行分类,计算平均值,绘制“不同用户在不同时间内的骑行人数”图
绘图代码 4
不同用户在不同时间内的骑行人数图
2019年7月12号
- 答辩ppt
- 项目背景
共享单车是指企业在校园、地铁站点、公交站点、居民区、商业区、公共服务区等提供自行车单车共享服务,是一种分时租赁模式, 也是一种新型环保共享经济。近年来,共享单车非常火爆。
目的:探究共享单车用户的行为特征,给出运营建议
- 原因分析
(1)需求量最大的时间为夏、秋季工作日上、下班时间,其次为周末10am-4pm,造成这样的原因主要是这些时间段都是人们出行的高峰期。
(2)会员用户和普通用户行为特征明显,会员骑行人数高于普通用户,因为前者主要为工作日通勤使用,后者为节日出游。
(3)月份骑行人数呈现一月的骑行人数最少,一月到六月的骑行人数逐步递增,六月达到顶峰,六月到十二月有所滑落,主要原因是气温的变化,一月最冷,从一月到六月逐步升温,六月过后气温过热,还有降雨量的变化。
- 战略决策
(1)分别在工作日上下班时间的办公商业区、半价等措施。
(2)春季可以作为单车替换、维护、新品测试的活跃时间,运营压力相对较小。
(3)提升用户注册率可有效提升用户活跃度,可以在此方面加大活动力度。
4、项目价值与意义
(1)通过数据进行分析,不仅能把隐藏的数据挖掘出来,还能通过这些隐藏的讯息,通过实体的运营,提升自己的客户源。
(2)对数据的分析和总结,从而制定出符合客户需要的个性化方案。
(3)产品与服务结合的更加紧密。
(4)利于平台的有效运转。
5、项目改进与建议
(1)缺少对共享单车实体的数据,比如车的骑行公里数、损坏率,损坏时间。
(2)可以对车的停放地点进行分析,调整地点车辆的投放比例。
(3)缺少用户信息,很难提出符合客户需要的个性化方案。
(4)数据缺少关于用户出行的一些客观因素如:温度、湿度等。
6、项目收获
(1)学会了通过Python对数据进行提取、处理和绘图。
(2)对大数据感到震撼,通过对不起眼的大量数据的分析我们可以证明自己的猜想,或者获取到隐藏的和对我们有效的信息,为下一步计划的制定或实施提供强大的支撑。
(3)体会到计算机的强大,对10886条数据进行分析,人工的方式需要很久,但是在计算机的帮助下只是几秒钟的事情。
(4)大数据是这个时代的产物,拥有着强大的力量。
- 答辩小题
- 通过字典创建如下数据框,并根据‘total’列进行升序排序;
字典
代码 1
运行结果 1
(2)对第(1)题数据框中的’class‘列进行分组,求各班各科目及总分的平均分,并重新设置
索引;
代码 2
运行结果 2
(3)请创建一个包含4个元素的列表,并对其中某一个元素/多个元素进行访问,增加元素和删除
元素;
代码 3
运行结果 3
(4)现有a=‘2019/7/1209:24:45’,请提取星期值及小时数;
代码 4
运行结果 4
(5)请对train.csv进行读取,并查看该数据的相关信息;
代码 5
运行结果 5
(6)对(5)中的数据框中的workingday列进行修改,将values为0映射为“rest”,将
values为1映射为“work”,并查看最终结果;
代码 6
运行结果 6
(7)请分别用普通函数和匿名函数实现求两参数的乘积;
代码 7
运行结果 7
(8)现有a=‘2019/7/12’,请使用两种方法提取其月份值;
代码 8
运行结果 8
(9)请对train.csv文件添加‘date’列,其内容为‘datetime’列中的年月日,添加完之
后将该列删除,并查看结果;
代码 9
运行结果 9
(10)检测train.csv数据文件是否包了含空值和异常值(注意:检测异常值时可对数据框中
holiday列进行绘图检验)。
代码 10
运行结果 10
三、心得体会
感觉任何事都要自己好好学习,才能取得好的结果。在这个项目的完成过程中,学会了通过Python对数据进行提取、处理和绘图。对大数据感到震撼,通过对不起眼的大量数据的分析我们可以证明自己的猜想,或者获取到隐藏的和对我们有效的信息,为下一步计划的制定或实施提供强大的支撑,体会到计算机的强大,对10886条数据进行分析,人工的方式需要很久,但是在计算机的帮助下只是几秒钟的事情,大数据是这个时代的产物,拥有着强大的力量。