#####################################################
#####  对电影数据的操作。 生成哑变量
#####################################################import osdata_dir = "python数据科学手册/pydata-book-2nd-edition-代码/datasets/movielens"
mnames = ['movie_id', 'title', 'genres']
movies = pd.read_table(os.path.join(data_dir, 'movies.dat'), sep='::', header=None, names=mnames)
movies.head()all_genres = []
for x in movies.genres:all_genres.extend(x.split('|'))
movies.shape
len(all_genres)
genres = pd.unique(all_genres)
len(genres)
genres'''
构建指标DataFrame的方法之一是从一个全零DataFrame开始:
'''zero_matrix = np.zeros((len(movies), len(genres)))
zero_matrix.ndim
zero_matrix.shapedummies = pd.DataFrame(zero_matrix, columns=genres)
dummies
gen = movies.genres[0]
gen
gen.split('|')
dummies.columns.get_indexer(gen.split('|'))
######################
#### 这里的 get_indexer 功能很好,就是获得标签,从一个列表里面,找到 相符合的, 获得它的编号。
# 必须是  columns  的方法。
######################
dummies.columns.get_indexer(movies.genres[1].split('|'))
dummies.columns.get_indexer(movies.genres[3].split('|'))movies.genresfor i, gen in enumerate(movies.genres):indices = dummies.columns.get_indexer(gen.split("|"))dummies.iloc[i, indices] = 1
dummies'''
这个操作 值得学习。
'''
#
# g2 = movies.genres[2]
# g2
# g2.split('|')
#
# dummies
# x = pd.DataFrame(np.zeros(18))
# x
# x.get_indexer(g2.split('|'))
# x.columns = genres
# genres
# dfx = pd.DataFrame(x, columns=genres)
# dfx
# dfx.get_indexer(g2.split('|'))
# dfx.columns.get_indexer(g2.split('|'))
# locx = dfx.columns.get_indexer(g2.split('|'))
# locx
#
# dfx.iloc[0, locx] = 10
# dfx.iloc[0,]
# dfxmovies_windic = movies.join(dummies.add_prefix('Genre_'))
movies_windic.iloc[0]

这段代码里面,最骚的操作就是  get_indexer。

使用cut生成虚拟变量也很方便。

比如

np.random.seed(12345)
values = np.random.rand(10)
values
bins = [0, 0.2, 0.4, 0.6, 0.8, 1]
pd.get_dummies(pd.cut(values, bins))

另外, add_prefix, 可以直接对变量名字全部修改。比如:

df = pd.DataFrame(np.arange(12).reshape(3, 4),columns=list('abcd'))
df
df.add_prefix('key_')

这部分用我自己的例子做一个。

有一个数据是这样的。

一些组织的活动,也是分成好多类别。

这个数据只不过稍微更复杂一点,服务类别是在dict_profile这个键里面。还需要抽出来。不影响。

import os
path = "all_volunteer_data_dir/每一个项目的信息(包含多个字典)"
import  pandas as pddf = pd.read_pickle(path)
df.keys()
df.iloc[0,]
df.shape
df = df.iloc[:100]
df.shape
df.keys()
df['dict_profile']serve_type = []
for i in range(df.shape[0]):profile = df.iloc[i, ]['dict_profile']serve_type.append(profile['服务类别:'])serve_type

先得到serve_type的列表。然后添加仅df

df['serve_type'] = serve_typedf.iloc[0, ]["serve_type"].split('|')
st1 =df.iloc[0, ]["serve_type"]
st1.split('|')
st1

好了,准备就绪,开始生成虚拟变量。

serve_type_all = []
for i in range(df.shape[0]):serve_type_listi = df.iloc[i,]['serve_type'].split("|")serve_type_all.extend(serve_type_listi)len(serve_type_all)
pd.Series(serve_type_all).value_counts()
import numpy as np
serve_type_all = np.unique(serve_type_all)
serve_type_all
serve_type_all.delete([""])
serve_type_allnew_serve_type_all = np.delete(serve_type_all, 0)
new_serve_type_all

这样获得所有服务类别的列表。

不过,这个还是不能用到循环里

在循环里,加一个判断,字符长度不能为0,就剔除了,空格。

for i, st in enumerate(df['serve_type']):st_list = st.split('|')clean_st_list = [ s for s in st_list if len(s) >0]indices = dummies.columns.get_indexer(clean_st_list)dummies.iloc[i, indices] = 1dummies

结果,就能得到dummies

查看第一行数据,结果如下:

df_with_serve_type = df.join(dummies.add_prefix("serveType_"))
df_with_serve_type.iloc[0, ]

利用python进行统计及分析第7章,构建电影分类的dummies相关推荐

  1. 利用python进行统计分析学习笔记 第7章

    第7章,基本功能部分,讲到了函数应用和映射 这里作者说了. ,将函数应用到由各列或行所形成的一维数组上.DataFrame 的apply方法即可实现此功能: 然后又说, 元素级的Python函数也是可 ...

  2. 利用python进行股票技术分析--以茅台为例

    """ 利用python进行股票技术分析–以茅台为例 通过下述策略对利用python进行股票技术分析,可以举一反三,并且能够实现复杂的技术分析策略,同时可以同python ...

  3. 如何利用python实现灰色关联分析?

    1.灰色关联分析简介 灰色系统这个概念是相对于白色系统和黑色系统而言的.从控制论的知识里,颜色一般代表对于一个系统我们已知信息的多少,白色代表信息量充足,黑色代表我们其中的构造并不清楚的系统,而灰色介 ...

  4. 明星不是梦#利用Python进行网站日志分析

    网站的访问日志是一个非常重要的文件,通过分析访问日志,能够挖掘出很多有价值的信息.本文介绍如何利用Python对一个真实网站的访问日志进行分析,文中将综合运用Python文件操作.字符串处理.列表.集 ...

  5. pythonallowpos_利用Python抓取并分析京东商品评论数据

    2.1 内容简介 本章主要介绍如何利用Python抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色等颜色, 70B到90D ...

  6. python实现情感分析_利用python实现简单情感分析

    最近选修的大数据挖掘课上需要做关于情感分析的pre,自己也做了一些准备工作,就像把准备的内容稍微整理一下写出来,下次再做类似项目的时候也有个参考. 情感分析是什么? 文本情感分析是指用自然语言处理(N ...

  7. 利用python进行微信好友分析

    欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...

  8. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?

    第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...

  9. 《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算(一)

    http://www.cnblogs.com/batteryhp/p/5046450.html 对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生 ...

最新文章

  1. Mybatis 基本配置, 面向接口
  2. C#基础-应用程序域
  3. [html] svg如何转为字体图标?
  4. 计算机网络——CSMA/CD最小帧长相关题目
  5. 这是可用于下一个项目的React Native工具列表
  6. Dubbo学习总结(1)——Dubbo入门基础与实例讲解
  7. MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
  8. 2022最新教程,半小时速通Git和Github的基本操作。
  9. macos备份文件服务器地址,mac电脑备份文件的最佳方法
  10. SQL将Json字符串转为表格
  11. day07 c++复习 核心编程02 核心内容(1、友元 2、3、继承 )
  12. Mac系统下连接阿里云并运行java程序
  13. opencv通过mask取目标纯色背景图
  14. No qualifying bean of type ‘xxx‘的问题解决方案
  15. excel服务器客户端在哪个文件夹,excel服务器客户端安装配置
  16. 腾讯 建造 通天塔 的 帝企鹅
  17. 如何恢复回收站删除的文件?
  18. 常见的中间件以及什么是中间件
  19. Web前端学习第二天---百度图库搜索
  20. OpenCV系列之特征匹配+单应性查找对象 | 四十五

热门文章

  1. 实现原理_Condition 实现原理
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第7章-Lurie 型动态网络的鲁棒 H 无穷簇同步
  3. python错误提示“TabError: inconsistent use of tabs and spaces in indentation”
  4. 异构网络垂直切换算法LTE/WIMAX切换
  5. 陆基制导系统地面站布设策略
  6. C++类与static关键字
  7. svn在commit后报错:is scheduled for addition, but is missing
  8. html_javascript
  9. tensorflow省钱方案-ml-engine
  10. 从JS对象开始,谈一谈“不可变数据”和函数式编程