数据格式:
目的数据:
![](https://i-blog.csdnimg.cn/blog_migrate/4e75e2d105e08764afe9970886c14f31.png)
目的:获取title字段中包含物流运输业名称作为分类,统计各个分类的条数
# -*- coding: utf-8 -*-
# @File : pandas_dataframe_classs_sum_demo.py
# @Date : 2020-01-06 16:38
# @Author : admin
'''
获取title字段中包含物流运输业名称作为分类,统计各个分类的条数
'''
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np;
df=pd.read_csv("../../data/911.csv");
df=df.head(10);
print(df.head(5))
#前5行的title列的数据
#print(df[:5]["title"])
###########################################################截取字符串,获取分类#################################
print("##################step1:截取字符串,获取分类############:")
jieque_array= df["title"].str.split(": ").tolist();
distinct_list=list(set([m[0] for m in jieque_array]));
print(jieque_array)
print(distinct_list)
###########################################################构建全0的矩阵#############################
print("##################step2:构建全0的矩阵####################:");
zeroes_array=pd.DataFrame(np.zeros((df.shape[0],len(distinct_list))),columns=distinct_list);
print(zeroes_array)
###########################################################修改赋值#############################
print("##################step3: 修改赋值####################:");
#方法一
for cat in distinct_list:
print(cat)
#zeroes_array[cat] 遍历的是列,相当于zeroes_array['EMS'],
print(df["title"].str.contains(cat)) #boolean 索引
zeroes_array[cat][df["title"].str.contains(cat)]=1;#表达的意思是:构建的全0矩阵中的某列,df原数据的每一行,的title列包含这个列名称,则赋值为1
print(zeroes_array)
'''
#方法二
for m in range(df.shape[0]):
zeroes_array.loc[m,jieque_array[m][0]]=1 #m行的jieque_array[m][0]列,在jieque_array中存在,赋值为1
print(zeroes_array)
'''
###########################################################按列即按类别求和#############################
print("####################step4:按列即按类别求和####################:");
df_sum=zeroes_array.sum(axis=0) #axis=0 按列
print(df_sum)
结果:
lat lng ... addr e
0 40.297876 -75.581294 ... REINDEER CT & DEAD END 1
1 40.258061 -75.264680 ... BRIAR PATH & WHITEMARSH LN 1
2 40.121182 -75.351975 ... HAWS AVE 1
3 40.116153 -75.343513 ... AIRY ST & SWEDE ST 1
4 40.251492 -75.603350 ... CHERRYWOOD CT & DEAD END 1
[5 rows x 9 columns]
##################step1:截取字符串,获取分类############:
[['EMS', 'BACK PAINS/INJURY'], ['EMS', 'DIABETIC EMERGENCY'], ['Fire', 'GAS-ODOR/LEAK'], ['EMS', 'CARDIAC EMERGENCY'], ['EMS', 'DIZZINESS'], ['EMS', 'HEAD INJURY'], ['EMS', 'NAUSEA/VOMITING'], ['EMS', 'RESPIRATORY EMERGENCY'], ['EMS', 'SYNCOPAL EPISODE'], ['Traffic', 'VEHICLE ACCIDENT -']]
['Traffic', 'Fire', 'EMS']
##################step2:构建全0的矩阵####################:
Traffic Fire EMS
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 0.0
4 0.0 0.0 0.0
5 0.0 0.0 0.0
6 0.0 0.0 0.0
7 0.0 0.0 0.0
8 0.0 0.0 0.0
9 0.0 0.0 0.0
##################step3: 修改赋值####################:
Traffic
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 True
Name: title, dtype: bool
Fire
0 False
1 False
2 True
3 False
4 False
5 False
6 False
7 False
8 False
9 False
Name: title, dtype: bool
EMS
0 True
1 True
2 False
3 True
4 True
5 True
6 True
7 True
8 True
9 False
Name: title, dtype: bool
Traffic Fire EMS
0 0.0 0.0 1.0
1 0.0 0.0 1.0
2 0.0 1.0 0.0
3 0.0 0.0 1.0
4 0.0 0.0 1.0
5 0.0 0.0 1.0
6 0.0 0.0 1.0
7 0.0 0.0 1.0
8 0.0 0.0 1.0
9 1.0 0.0 0.0
####################step4:按列即按类别求和####################:
Traffic 1.0
Fire 1.0
EMS 8.0
dtype: float64