pandas数据分析入门

pandas数据分析入门

    本文以美国共享单车的数据为例,使用pandas对数据进行相关的探索和分析,同时可以了解一些pandas的简单统计函数如取平均值,众数,时间类型处理等。

数据集

数据是下载了网上关于美国共享单车数据,包含了芝加哥、纽约、华盛顿三个城市共享单车的数据,涉及字段如下:

起始时间 Start Time (str类型:yyyy-MM-dd HH:mm:ss)

结束时间 End Time (str类型:yyyy-MM-dd HH:mm:ss)

骑行时长 Trip Duration(int类型,秒)

起始车站 Start Station(例如百老汇街和巴里大道)

结束车站 End Station(例如塞奇威克街和北大道)

用户类型 User Type(订阅者Subscriber/Registered 或客户Customer/Casual)

性别 Gender (Male,Female)

出生年份 Birth Year

问题

当得到一份数据要对其进行分析,就会针对分析的主题提出一些问题,从中获得一些分析结论。针对共享单车分析

提了一下问题:(ps:问题是我copy的)

1)起始时间(Start Time 列)中哪个月份最常见?

2)起始时间中,一周的哪一天(比如 Monday, Tuesday)最常见?

3)起始时间中,一天当中哪个小时最常见?

4)总骑行时长(Trip Duration)是多久,平均骑行时长是多久?

5)哪个起始车站(Start Station)最热门,哪个结束车站(End Station)最热门?

6)哪一趟行程最热门(即,哪一个起始站点与结束站点的组合最热门)?

7)每种用户类型有多少人?

8)每种性别有多少人?

9)出生年份最早的是哪一年、最晚的是哪一年,最常见的是哪一年?

数据分析

导入相关的包

import numpy as np

import pandas as pd

import matplotlib as plt

CITY_DATA={'chicago':'chicago.csv',

'new_york':'new_york_city.csv',

'washington':'washington.csv'}

读取数据

def read_file(city_name):
    data=pd.read_csv(CITY_DATA[city_name])
    return data,city_name

为了回答上面的问题,定义几个自定义的函数:

1. time_stats()回答

 1)起始时间(Start Time 列)中哪个月份最常见?

 2)起始时间中,一周的哪一天(比如 Monday, Tuesday)最常见?

 3)起始时间中,一天当中哪个小时最常见?

def time_stats(data):
    data['Start Month']=data['Start Time'].str[5:7]
    common_start_month=int(data['Start Month'].mode().values[0]) # 取众数
    data['weed_day']=pd.to_datetime(data['Start Time']).dt.weekday
    common_weed_day=int(data['weed_day'].mode().values[0])
    data['hour']=pd.to_datetime(data['Start Time']).dt.hour
    common_hour=int(data['hour'].mode().values[0])
    print('起始时间中%d月份最常见'%(common_start_month))
    print('起始时间中,一周的周%d最常见'%(common_weed_day))
    print('起始时间中,一天当中第%d小时最常见'%(common_hour))

2. station_stats() 回答

 4)总骑行时长(Trip Duration)是多久,平均骑行时长是多久?

 5)哪个起始车站(Start Station)最热门,哪个结束车站(End Station)最热门?

 6)哪一趟行程最热门(即,哪一个起始站点与结束站点的组合最热门)?

def station_stats(data):
    sum_trip_duration=data['Trip Duration'].sum()
    mean_trip_duration=data['Trip Duration'].mean()
    common_end_station=data['End Station'].mode().values
    common_start_station=data['Start Station'].mode().values
    data['trip line']=data['Start Station']+'->'+data['End Station']
    common_trip_line=data['trip line'].mode().values
    print('总骑行时长是%f,平均骑行时长是%f'%(sum_trip_duration,mean_trip_duration))
    print("起始车站 %s最热门,结束车站 %s最热门"%(common_start_station[0],common_end_station[0]))
    print('行程 %s最热门'%(common_trip_line[0]))

3. usr_stats() 回答

  7)每种用户类型有多少人?

  8)每种性别有多少人?

  9)出生年份最早的是哪一年、最晚的是哪一年,最常见的是哪一年?

def usr_stats(data):
    Gender=data['Gender'].value_counts()
    user_type=data['User Type'].value_counts()
    lastest_year=int(data['Birth Year'].max())
    earliest_year=int(data['Birth Year'].min())
    common_year=int(data['Birth Year'].mode().values)
    print('****男女分布:*****\n',Gender)
    print("****用户类型分布:****\n",user_type)
    print("出生年份最早的用户是%d年、最晚的用户是%d年,最常见的用户是%d年" %(earliest_year,lastest_year,common_year))

最后运行python脚本,得到结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值