zl程序教程

您现在的位置是:首页 >  其他

当前栏目

数据分析-day06-pandas-dataFrame案例分析1(方法一):获取title字段中包含物流运输业名称作为分类,统计各个分类的条数

2023-09-27 14:22:12 时间
数据格式:

目的数据:


目的:获取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