# -*- coding: utf-8 -*-
"""
明确任务:绘制不同用户季度平均骑行时间的分组柱状图
"""
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 解决matplotlib中文显示问题,仅适用mac系统
def get_chinese_font():
return FontProperties(fanme='/System/Library/Fonts/PingFang.ttc')
data_path = './data/bikeshare/'
#数据源和迷你数据源均和上一节课相同,所以不重复放到这节课的文件夹里了
data_filenames = ['2017-q1_trip_history_data.csv', '2017-q2_trip_history_data.csv',
'2017-q3_trip_history_data.csv', '2017-q4_trip_history_data.csv']
# 结果保存路径
output_path = './output'
if not os.path.exists(output_path):
os.makedirs(output_path)
def collect_process_analyze_data():
"""
Step 1+2+3: 数据获取,数据处理,数据分析
"""
member_mean_duration_list = []
casual_mean_duration_list = []
for data_filename in data_filenames:
data_file = os.path.join(data_path, data_filename)
data_arr = np.loadtxt(data_file, delimiter=',', dtype='str', skiprows=1)
# 去掉双引号
# 骑行时间
duration_col = np.core.defchararray.replace(data_arr[:, 0], '"', '')
duration_col = duration_col.reshape(-1, 1)
# 用户类型
member_type_col = np.core.defchararray.replace(data_arr[:, -1], '"', '')
member_type_col = member_type_col.reshape(-1, 1)
duration_member_type_arr = np.concatenate([duration_col, member_type_col], axis=1)
# 会员平均骑行时间
member_arr = duration_member_type_arr[duration_member_type_arr[:, 1] == 'Member']
member_mean_duration = np.mean(member_arr[:, 0].astype('float') / 1000 / 60)
member_mean_duration_list.append(member_mean_duration)
# 非会员平均骑行时间
causal_arr = duration_member_type_arr[duration_member_type_arr[:, 1] == 'Casual']
casual_mean_duration = np.mean(causal_arr[:, 0].astype('float') / 1000 / 60)
casual_mean_duration_list.append(casual_mean_duration)
return member_mean_duration_list, casual_mean_duration_list
def save_and_show_results(member_mean_duration_list, casual_mean_duration_list):
"""
Step 4: 结果展示
"""
bar_locs = np.arange(4)
bar_width = 0.35 # 柱子宽度
xtick_labels = ['第{}季度'.format(i + 1) for i in range(4)]
# xtick_labels = []
# for i in range(4):
# xtick_labels.append('第{}季度'.format(i + 1))
plt.figure()
plt.bar(bar_locs, member_mean_duration_list, width=bar_width, color='g', alpha=0.7, label='会员')
plt.bar(bar_locs + bar_width, casual_mean_duration_list, width=bar_width, color='r', alpha=0.7, label='非会员')
plt.xticks(bar_locs + bar_width / 2, xtick_labels, rotation=45, fontproperties=get_chinese_font())
plt.ylabel('平均骑行时间(单位:分钟)', fontproperties=get_chinese_font())
plt.title('柱状图', fontproperties=get_chinese_font())
plt.legend(loc='best', prop=get_chinese_font())
plt.tight_layout()
plt.savefig(os.path.join(output_path, 'group_bar_chart.png'))
plt.show()
def main():
"""
主函数
"""
# Step 1 + 2 + 3: 数据获取,数据处理,数据分析
member_mean_duration_list, casual_mean_duration_list = collect_process_analyze_data()
save_and_show_results(member_mean_duration_list, casual_mean_duration_list)
if __name__ == '__main__':
main()
没有合适的资源?快使用搜索试试~ 我知道了~
【课程代码】用NumPy和Pandas做数据分析实战.zip
共140个文件
csv:55个
ds_store:45个
py:25个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 5 下载量 74 浏览量
2021-04-12
18:59:04
上传
评论 2
收藏 93.24MB ZIP 举报
温馨提示
用NumPy和Pandas做数据分析实战! 课程代码! 想要学习数据分析的小伙伴可以入手一个!
资源推荐
资源详情
资源评论
收起资源包目录
【课程代码】用NumPy和Pandas做数据分析实战.zip (140个子文件)
2017-q3_trip_history_data.csv 161.03MB
2017-q2_trip_history_data.csv 149.46MB
2017-q4_trip_history_data.csv 109.67MB
2017-q1_trip_history_data.csv 87MB
2017-q4_trip_history_data.csv 2.52MB
2017-q2_trip_history_data.csv 2.48MB
2017-q1_trip_history_data.csv 2.23MB
2017-q3_trip_history_data.csv 2.11MB
video_games_sales.csv 1.15MB
Beijing_PM.csv 565KB
Beijing_PM.csv 565KB
Beijing_PM.csv 565KB
Beijing_PM.csv 565KB
pm1.csv 495KB
pm1.csv 495KB
pokemon.csv 78KB
house_data.csv 34KB
house_data.csv 34KB
happiness_report.csv 28KB
happiness_report.csv 28KB
coffee_menu.csv 26KB
pm2.csv 24KB
pm2.csv 24KB
pm2.csv 24KB
pm2.csv 24KB
stock_ext.csv 11KB
employee_info.csv 11KB
employee_info.csv 11KB
user_device.csv 7KB
user_usage.csv 7KB
top20_games.csv 2KB
employee_edu.csv 1KB
employee_edu.csv 1KB
year_region_pivot.csv 1KB
year_region_pivot_results.csv 1KB
year_region_grouped_results.csv 1KB
year_region_grouped.csv 1KB
example_records.csv 1KB
temp.csv 726B
temp.csv 726B
temp.csv 546B
temp.csv 546B
temp.csv 546B
temp.csv 546B
temp2.csv 546B
temp2.csv 546B
category_mean_calories.csv 336B
mobile_system_usage.csv 265B
category_count.csv 230B
201801_temp.csv 140B
201801_temp.csv 140B
201802_temp.csv 126B
201802_temp.csv 126B
201803_temp.csv 118B
201803_temp.csv 118B
.DS_Store 26KB
.DS_Store 14KB
.DS_Store 14KB
.DS_Store 14KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 10KB
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
共 140 条
- 1
- 2
资源评论
- m0_627974922022-07-29资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
- m0_607570802024-04-01资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
- GOUZILJY2022-12-17感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- 2301_774810552024-03-14资源不错,对我启发很大,获得了新的灵感,受益匪浅。
flowerinmyheart
- 粉丝: 180
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
- SpringBoot整合mongodb学习MongoTemplate和MongoRepository两种方式CRUD使用.zip
- SpringBoot整合MongoDB实现对数据库的CRUD小demo.zip
- Python操作MongoDB数据库的基本一些操作 .zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功