数据分析实战①——统计911电话不同月份不同类型的电话次数的变化情况

'''911'''
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#读取数据
df = pd.read_csv('E:\AI课程笔记\数据分析\911.csv')
print(df.head(10))

#获取分类情况
a = df["title"].str.split(":").tolist() #获取分类情况
b = list(set([i[0] for i in a])) #set()方法去重
print(b)  #['EMS', 'Traffic', 'Fire'] 三种分类情况

#构造全为0数组
zero_df = pd.DataFrame(np.zeros((df.shape[0],len(b))),columns=b) #构造全为0数组
print(zero_df.head(10)) #查看前10行

#赋值
for i in b: #遍历行 
  zero_df[i][df["title"].str.contains(i)] = 1  #判断字符串是否包含某字符
print(zero_df.head(10)) #查看前10行
print(zero_df.sum(axis=0)) #查看每一列的和
print(zero_df.sum(axis=1)) #查看每一行的和 
  
pd.date_range(start='2017-01-01',end='2017-01-31',freq="D") #生成一个日期序列,以天为单位
pd.date_range(start='2017-01-01',end='2017-01-31',freq="3D") #生成一个日期序列,以3天为单位
pd.date_range(start='2017-01-01',periods=10,freq="D") #生成一个日期序列 从2017-01-01开始,往后10天
pd.date_range(start='2017-01-01',periods=10,freq="M") #生成一个日期序列 从2017-01-01开始,往后10月
pd.date_range(start='2017-01-01',periods=10,freq="H") #生成一个日期序列 从2017-01-01开始,往后10小时

df["time stamp"] = pd.to_datetime(df["time stamp"], format = '') #将时间戳转换为日期格式

#重采样 

'''统计出911数据中不同月份电话次数的变化情况'''

df["timeStamp"] = pd.to_datetime(df["timeStamp"]) #将时间字符串转换为时间类型
df.set_index("timeStamp",inplace=False) #设置索引 inplace=True表示在原数据上修改
print(df.head(10))

#按月份统计
df_month = df.resample("M").count() #按月份统计
print(df_month.head(10)) #查看前10行
print(df_month["title"]) #查看title列

#画图
plt.figure(figsize=(20,10)) #设置图片大小
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文显示
x = df_month.index.strftime('%Y-%m') #x轴数据 日期格式化
y = df_month["title"] #y轴数据
plt.xticks(rotation=45) #设置x轴刻度旋转角度
plt.xlabel("月份") #设置x轴标签
plt.ylabel("次数") #设置y轴标签
plt.title("911数据中不同月份电话次数的变化情况") #设置标题
plt.plot(x,y) #绘制图像
plt.show() #显示图像

'''统计出911数据中不同月份不同类型电话的次数的变化情况'''
a = df["title"].str.split(":").tolist() #获取分类情况
b = [i[0] for i in a] #set()方法去重
df["type"] = pd.DataFrame(np.array(b).reshape((df.shape[0],1))) #构造type列
print(df.head(10))
print(df["type"]) #查看type列

#分组
df_group = df.groupby(by="type").count() #分组
print(df_group.head(10)) #查看前10行
for c,d in df_group.groupby(by="type"): #遍历分组
  e = d.resample("M").count() #按月份统计
  
x = df_group.index #x轴数据
y = df_group.values #y轴数据

plt.plot(x,y) #绘制图像

  print(c) #打印分组的名称
  print(d) #打印分组的数据
  print(e) #打印分组的数据

#重采样
df_group_month = df_group.resample("M").count() #按月份统计
print(df_group_month.head(10)) #查看前10行

#画图
plt.figure(figsize=(20,10))
for c,d in df_group_month.groupby(by='type'):
    plt.plot
plt.xlabel('月份')
plt.ylabel('次数')
plt.title('911数据中不同月份不同类型电话的次数的变化情况')
plt.xticks(rotation=45)
plt.legend()
plt.show()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字生命Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值