Udacity数据分析(入门)-探索美国共享单车数据

本项目使用Python探索美国芝加哥、纽约和华盛顿特区的共享单车数据,涉及数据导入、用户交互、骑行统计分析。用户可以指定城市、月份和星期,查看最常见骑行时长、热门起始和结束车站、用户类型、性别分布等信息。
摘要由CSDN通过智能技术生成

项目概述

在此项目中,将利用 Python 探索与以下三大美国城市的自行车共享系统相关的数据:芝加哥纽约华盛顿特区
将编写代码导入数据,并通过计算描述性统计数据回答有趣的问题。并将写一个脚本,该脚本会接受原始输入并在终端中创建交互式体验,以展现这些统计信息。

数据集

提供了三座城市 2017 年上半年的数据。三个数据文件都包含相同的核心六 (6) 列

  • 起始时间 Start Time(例如 2017-01-01 00:07:57)
  • 结束时间 End Time(例如 2017-01-01 00:20:53)
  • 骑行时长 Trip Duration(例如 776 秒)
  • 起始车站 Start Station(例如百老汇街和巴里大道)
  • 结束车站 End Station(例如塞奇威克街和北大道)
  • 用户类型 User Type(订阅者 Subscriber/Registered 或客户Customer/Casual)

芝加哥和纽约市文件还包含以下两列(数据格式可以查看下面的图片):

  • 性别 Gender
  • 出生年份 Birth Year

问题

需要回答的问题

将编写代码并回答以下关于自行车共享数据的问题:

  • 起始时间(Start Time 列)中哪个月份最常见?
  • 起始时间中,一周的哪一天(比如 Monday, Tuesday)最常见? 提示:可以使用 datetime.weekday() (点击查看文档)
  • 起始时间中,一天当中哪个小时最常见?
  • 总骑行时长(Trip Duration)是多久,平均骑行时长是多久?
  • 哪个起始车站(Start Station)最热门,哪个结束车站(End Station)最热门?
  • 哪一趟行程最热门(即,哪一个起始站点与结束站点的组合最热门)?
  • 每种用户类型有多少人?
  • 每种性别有多少人?
  • 出生年份最早的是哪一年、最晚的是哪一年,最常见的是哪一年?

需要有互动式体验

最终文件要是一个脚本,它接受原始输入在终端中(如Windows的cmd中国)创建交互式体验,来回答有关数据集的问题。这种体验之所以是交互式的,是因为根据用户输入的内容,下一页面中的数据结果也会随之改变(用input()实现)。

有以下三个问题会对结果产生影响:

  1. 你想分析哪个城市的数据?输入:芝加哥,纽约,华盛顿 ( Would you like to see data for Chicago, New York, or Washington?)
  2. 你想分析几月的数据?输入:全部,一月,二月…六月 ( Which month? all, january, february, … , june?)
  3. 你想分析星期几的数据?输入:全部,星期一,星期二…星期日 (Which day? all, monday, tuesday, … sunday?)

这几个问题的答案将用来确定进行数据分析的城市,同时选择过滤某个月份或星期的数据。在相应的数据集过滤和加载完毕后,用户会看到数据的统计结果,并选择重新开始或退出。输入的信息应当大小写不敏感,比如"Chicago", “CHICAGO”, “chicago”, “chiCago”都是有效输入。你可以使用 lower(), upper(), title() 等字符串方法对输入值进行处理。

项目流程

导入库及数据集

import time
import pandas as pd
import numpy as np

CITY_DATA = {
    'chicago': 'chicago.csv',
              'new york city': 'new_york_city.csv',
              'washington': 'washington.csv' }

生成初始页面(接受用户输入的城市、月份、日期)

def get_filters():
    """
    Asks user to specify a city, month, and day to analyze.

    Returns:
        (str) city - name of the city to analyze
        (str) month - name of the month to filter by, or "all" to apply no month filter
        (str) day - name of the day of week to filter by, or "all" to apply no day filter
    """
    print('\nHello! Let\'s explore some US bikeshare data!')
    # TO DO: get user input for city (chicago, new yor.k city, washington). HINT: Use a while loop to handle invalid inputs
    def input_mod(input_print, enterable_list):
        ret = input(input_print)
        while ret.lower() not in enterable_list:
            ret = input(input_print)
        return ret

    # TO DO: get user input for city (chicago, new york city, washington). HINT: Use a while loop to handle invalid inputs
    city = input_mod('\nPlease input the name of city which you want to analyze: Chicago, New york city, Washington or all!\n', list(CITY_DATA.keys()) + ['all'])
    # TO DO: get user input for month (all, january, february, ... , june)
    month = input_mod('\nPlease input the month you want to analyze: all, january, february, ... , june!\n', ['january', 'february', 'march', 'april', 'may', 'june', 'all'])
    # TO DO: get user input for day of week (all, monday, tuesday, ... sunday)
    da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值