pandas 字符串离散化的案例


在这里插入图片描述

案例1:统计Genre【类别】字段中单词【电影类别】出现的次数

数据链接:https://pan.baidu.com/s/1tL7TSqgEcF3F6EpVvb51uQ 
提取码:5kj5 
复制这段内容后打开百度网盘手机App,操作更方便哦

在这里插入图片描述在这里插入图片描述

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

df = pd.read_csv("../data/IMDB-Movie-Data.csv")
# 1. 统计Genre字段
temp_list = df["Genre"].str.split(",").tolist()  # [[],[],[]] 嵌套列表 [['Action', 'Adventure', 'Sci-Fi'], ['Adventure', 'Mystery', 'Sci-Fi']...]
genre_list = list(set([j for i in temp_list for j in i]))  # 电影类别过滤 过滤成柱状图下边的单词 举个例子:若sb 这个单词出现过100次,只统计一次
# 2. 构造全为0的二维数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))), columns=genre_list)
# 3. 给每个电影出现分类的位置赋值1
# for i in range(df.shape[0]):  # 方式一 效率极低
#     zeros_df.loc[i, temp_list[i]] = 1
for genre in genre_list:  # 方式二 效率极高
    zeros_df[genre][df['Genre'].str.contains(genre)] = 1
# 4. 统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
# 5. 将电影的数量和升序排序
genre_count = genre_count.sort_values()
# 6. 画图
_x = genre_count.index
_y = genre_count.values
plt.figure(figsize=(20, 8), dpi=80)
plt.bar(range(len(_x)), _y, width=0.4, color="orange")
plt.xticks(range(len(_x)), _x)
plt.show()

有关df【DataFrame】的相关知识

# 获得行索引信息
df.index
# 获得列索引信息
df.columns
# 获得df的size
df.shape
# 获得df的行数
df.shape[0]
# 获得df的列数
df.shape[1]
# 获得df中的值
df.values

创建一个全为1或0的数组链接

案例2:现在我们有2015到2017年25万条911的紧急电话的数据,请统计出这些数据中不同类型的紧急情况的次数

在这里插入图片描述

数据链接:https://pan.baidu.com/s/13zY2GFzdHWolUHfyoNrogw 
提取码:ggyr 
复制这段内容后打开百度网盘手机App,操作更方便哦
# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/911.csv")
temp_list = df["title"].str.split(": ").tolist()
cate_list = list(set([i[0] for i in temp_list]))  # 去重后转换为列表['EMS', 'Traffic', 'Fire']
# 构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(cate_list))), columns=cate_list)
for cate in cate_list:
    # df["title"].str.contains(cate)]选中源数据中title列中 所有包含cate的
    # zeros_df[cate] 选中cate列
    zeros_df[cate][df["title"].str.contains(cate)] = 1
sum_ret = zeros_df.sum(axis=0)
print(sum_ret)

案例2: 简单测试

在这里插入图片描述
案例2 法子2

import pandas as pd
import numpy as np

df = pd.read_csv("./input/911.csv")
# 切割字符串
temp_list = df["title"].str.split(": ").tolist()
# 将列表中的第一个元素取出来
all_cate_list = list([i[0] for i in temp_list])
df = pd.DataFrame(all_cate_list, columns=['cate'])
# 交叉表
pd.crosstab(df.shape[0], df['cate'])

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值