【数据分析】共享单车数据的处理

日常练习,题目如下:

1.读取train数据集

2.查看前5条数据2.查看数据信息3.查看数据分布"
3."切分 训练集和 测试集,并且增加一列 trainortest ,来区分每条数据 是 属于训练集 还是测试集合,然后合并"
4.切分datetime列 2011-01-01 00:00:00,新增 日期列  date列 例如2012-06-09
5.新增 小时 列,例如datetime列 ""2011-01-01 00:14:00""中的14"
6.月份 属性列 进行频数统计
7."统计 不同小时,用车的总数量 1.根据小时 进行分组 
8.使用分组对象的 聚合函数 进行 组内求和,得到的是 数据帧(组内 所有 属性求和)
9.取出 求和 数据帧中的 count求和列,作为一个系列series
10.绘制以上系列对象的折线图
11.根据上图 将 hour 可以分为 几个 时间段 hour_section列
12.先获取 部分属性 ["temp","atemp","casual","registered","humidity","windspeed","count"],构造一个数据帧对象df2
13.使用df2对象的自带方法生成皮尔逊相关系数矩阵df3,对df3绘制热力图并且展示

导包:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn
import datetime
from sklearn.model_selection import train_test_split

题目实现:

# (8) 读取train数据集
df = pd.read_csv('train.csv')
# (9) "数据检视
# #1.查看前5条数据2.查看数据信息3.查看数据分布"
print(df.head())
df.info()
print(df.describe())
# (10) "切分 训练集和 测试集,并且增加一列 trainortest ,
# 来区分每条数据 是 属于训练集 还是测试集合,然后合并"
data_tr, data_te = train_test_split(df, test_size=0.25)
data_tr['trainortest'] = '训练集'
data_te['trainortest'] = '测试集'
df = pd.concat([data_tr, data_te])
# (11) 切分datetime列 2011-01-01 00:00:00,新增 日期列  date列 例如2012-06-09
import datetime


def month_section(x):
    daboj = datetime.datetime.fromisoformat(x)
    return daboj.month


def day_section(x):
    daboj = datetime.datetime.fromisoformat(x)
    return daboj.day


def hour_section(x):
    daboj = datetime.datetime.fromisoformat(x)
    return daboj.hour


def date_set(x):
    daboj = datetime.datetime.fromisoformat(x)
    year = daboj.year
    month = daboj.month
    day = daboj.day
    return f'{year}-{month}-{day}'


df['date'] = df['datetime'].apply(date_set)
# (12) 新增 小时 列,例如datetime列 ""2011-01-01 00:14:00""中的14"
df['hour_section'] = df['datetime'].apply(hour_section)
# (13) 月份 属性列 进行频数统计
df['month_section'] = df['datetime'].apply(month_section)
print(df['month_section'].value_counts())
# (14) "统计 不同小时,用车的总数量 1.根据小时 进行分组
data_hc = df.groupby(by=['hour_section'])
# (15) 2.使用分组对象的 聚合函数 进行 组内求和,得到的是 数据帧(组内 所有 属性求和)
data_hc_sum = data_hc.agg(numpy.sum)
# (16) 3.取出 求和 数据帧中的 count求和列,作为一个系列series
data_hc_sum_reset_index = data_hc_sum.reset_index()
# print(data_hc_sum_reset_index)
print(df['count'])
# (17) 4.绘制以上系列对象的折线图
seaborn.lineplot(data=data_hc_sum_reset_index,x='hour_section',y='count')
plt.show()


# (18) 根据上图 将 hour 可以分为 几个 时间段 hour_section列
def hour_set(x):
    if 6 <= x <= 9:
        return '早高峰'
    elif 11 <= x <= 13:
        return '午高峰'
    elif 17 <= x <= 21:
        return '晚高峰'
    else:
        return '低谷'


df['hour_section'] = df['hour_section'].apply(hour_set)
# (19) 先获取 部分属性 ["temp","atemp","casual","registered","humidity","windspeed","count"],
# 构造一个数据帧对象df2
get_list = ["temp", "atemp", "casual", "registered", "humidity", "windspeed", "count"]
df2 = df.loc[:, get_list]
# (20) 使用df2对象的自带方法生成皮尔逊相关系数矩阵df3,对df3绘制热力图并且展示
df3 = df2.corr()
seaborn.heatmap(data=df3,annot=True)
plt.show()


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目前大家比较熟悉共享单车使用编制一个共享单车的管理程序,实现如下基本功能。假设有5种品牌的共享单车(品牌内容自定)。 针对该5种品牌的共享单车,自行设计一套包含每种单车的品牌名称、投放量、投放点、某一时间点的在用数量、每辆车的每天骑行次数及单次里程和总里程、开锁过程发现的损坏次数等信息(所有相关数据均自行设计)的数据结构; 随着骑行活动的开展,待使用单车的数量将发生变化。要求能对每种单车使用数量及待使用的数量进行查询统计并输出; 对于某一投放点的某一品牌的单车,如果无备用车(待使用的车均为备用车),或备用车均为损坏的车,系统应能给出信息提示; 对于损坏报修的车辆,系统能够进行及时的统计,并能在投放数量削减损坏车辆的数量,形成真实的有效投放量; 能够对客户信息进行处理,包括注册的用户名、电话号码、骑行里程、骑行习惯(比如70%以上的出行时间集在某个时间段,时间段按时钟整点划分)、每天平均的骑行时间等; 该系统能进行当日使用状况的统计,用链表排序(排序算法不限)提示交易使用次数排在前三名的单车品牌; 假设每种单车使用是收费的,如第一个小时是免费的,第二个小时开始每小时收费0.5元,各品牌可各自推出优惠收费条件(优惠条件自定义),然后根据假设的使用情况,统计出各种品牌的日营业额,并对各品牌的受欢迎程度进行排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值