Python数据分析及可视化-⼩测验
image.png
⾸先将5题的⽂件复制形成副本,如下图所⽰:
image.png
在资源管理器的路径中输⼊cmd,如下图所⽰:
image.png
在上图中输⼊后,按Enter键运⾏进⼊cmd窗⼝。
在cmd窗⼝中输⼊并运⾏命令: jupyter notebook,如下图所⽰:
image.png
在上图中输⼊后,按Enter键运⾏⾃动打开浏览器并且进⼊jupyter notebook编程界⾯。 在jupyter notebook中,点击 第⼀题,ipynb和 第⼀题-副本.ipynb。
浏览器会新建两个标签页,如下图所⽰:
image.png
在两个标签页中,读者可以对照题⽬要求完成做题。
下⾯是5道题⽬作者的答案和解析。
1.第⼀⼤题
1.1 第⼀步:导⼊相应的模块
最后2⾏代码可以使作图时不出现编码错误,分别⽤来正常显⽰中⽂标签和正常显⽰负号。
表演课游戏import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
1.2 第⼆步:利⽤pandas读取datats⽬录下chipo.csv并显⽰前⼗⾏数据(赋值给变量chipo)
csv⽂件默认的分隔符是逗号,pd.read_csv⽅法中p关键字参数的默认值也为逗号,所以可以不写p关键字。
显⽰前⼗⾏数据⽤chipo.head(10)即可。
苇叶chipo = pd.read_csv('datats/chipo.csv')
chipo.head(10)
1.3 第三步:根据列名为item_name中每种商品出现的频率,绘制出柱状图
给出的答案⽰例是购买次数排名第2-6名的商品的作图结果。
chipo.item_name.value_counts()是对商品购买次数进⾏统计,返回的结果降序排列,数据类型为Series。
x_list是x轴标记点,数据类型为列表;xticks_list是x轴标记点显⽰值,数据类型为列表;顿时的近义词是什么
rotation设置为90,是x轴标记点显⽰值以右边为轴逆时针旋转90度。
plt.bar⽅法中指定每根柱⼦的颜⾊,这样才可以画出⽰例答案的效果。
mostOrder_list = chipo.item_name.value_counts().iloc[5:0:-1]
xticks_list = mostOrder_list.index
x_list = range(len(xticks_list))
施工安全责任书y_list = mostOrder_list.values
plt.bar(x_list, y_list, width=0.5, color=['b', 'orange', 'g', 'r', 'purple'])
plt.title('购买次数最多的商品排名')
plt.xlabel('商品名称')行进的拼音
plt.ylabel('出现的订单次数')
人教版六年级下册数学教学计划
plt.show()
上⾯这段代码的运⾏结果如:
柱形图.png
1.4 第四步:根据订单编号(order_id)进⾏分组,求出每个订单花费的总⾦额,例如订单编号为1的总⾦额为11.56美元。然后根据每笔订单的总⾦额和每笔订单购买商品的总数量画出散点图(总⾦额为x轴,商品总数为y 轴)。
先将chipo这个变量深度拷贝给c变量,这样可以避免影响原数据,使代码每次都能成功运⾏。
item_price这个单词是⼀个条⽬的价格,不是单个商品的单价。
我们平时超市购物的单⼦的最后price那⼀列也是算的这⼀个条⽬的价格,⽐如2个相同的商品算1个条⽬。
c = py()
c.quantity = c.quantity.astype('int')
c.item_price = c.item_price.str.strip('$').astype('float')
order_group = c.groupby('order_id')
x_list = order_group.item_price.sum()
y_list = order_group.quantity.sum()
plt.scatter(x_list, y_list, color='g')
plt.xlabel('订单总价')
plt.ylabel('商品总数')
plt.title('每笔订单总⾦融和购买商品数量关系')
plt.show()
上⾯这段代码的运⾏结果如下:
散点图.png
2.第⼆⼤题
2.1 第⼀步:导⼊相应的模块
最后2⾏代码可以使作图时不出现编码错误,分别⽤来正常显⽰中⽂标签和正常显⽰负号。
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
2.2 第⼆步:利⽤pandas读取datats⽬录下special_top250.csv并显⽰前五⾏数据(赋值给变量top250)
csv⽂件默认的分隔符是逗号,pd.read_csv⽅法中p关键字参数的默认值也为逗号,所以可以不写p关键字。
显⽰前五⾏数据⽤chipo.head()即可。
top250 = pd.read_csv('datats/special_top250.csv')
top250.head()
2.3 第三步:在同⼀个图中绘制出电影时长和电影排名的散点图关系及电影时长的频率分布直⽅图,分50组,如下图所⽰:
x_ries = vie_duration
y_ries = top250.num
plt.figure(figsize=(14,6))
plt.subplot(121)
plt.scatter(x_ries, y_ries)
plt.xlabel('电影时长')
plt.ylabel('电影排名')
plt.subplot(122)
plt.hist(x_ries,bins=50)
plt.show()咳嗽吃鱼会加重吗
qq小号网上⾯⼀段代码的运⾏结果如下:
image.png
2.4 第四步:由上图中电影时长的频率分布直⽅图,并不能⽐较准确的反映出每个分组下电影的数量,请根据以下提⽰,绘制如下图所⽰根据电影时长分组的柱状图
bins = [0,80,120,140,180,1000]
tags = ['偏短','标准','正常','偏长','超长']
2.5 第五步:具体显⽰每个分组下的电影数量
在pandas官⽹中查询pandas.cut函数中的参数,其中参数bins是数据区间分割值,参数labels是数据按照区间分类后的标签,如下图所⽰。如果参数bins和labels都是可迭代对象,则bins⽐labels长度⼤1。