本文共 3247 字,大约阅读时间需要 10 分钟。
数据格式:
目的数据:
# -*- coding: utf-8 -*-# @File : pandas_dataframe_classs_sum_demo.py# @Date : 2020-01-06 16:38# @Author : admin'''获取title字段中包含物流运输业名称作为分类,统计各个分类的条数'''import pandas as pdfrom matplotlib import pyplot as pltimport 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列包含这个列名称,则赋值为1print(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中存在,赋值为1print(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转载地址:http://lxtgi.baihongyu.com/