利用python进行统计及分析第7章,构建电影分类的dummies
#####################################################
##### 对电影数据的操作。 生成哑变量
#####################################################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相关推荐
- 利用python进行统计分析学习笔记 第7章
第7章,基本功能部分,讲到了函数应用和映射 这里作者说了. ,将函数应用到由各列或行所形成的一维数组上.DataFrame 的apply方法即可实现此功能: 然后又说, 元素级的Python函数也是可 ...
- 利用python进行股票技术分析--以茅台为例
""" 利用python进行股票技术分析–以茅台为例 通过下述策略对利用python进行股票技术分析,可以举一反三,并且能够实现复杂的技术分析策略,同时可以同python ...
- 如何利用python实现灰色关联分析?
1.灰色关联分析简介 灰色系统这个概念是相对于白色系统和黑色系统而言的.从控制论的知识里,颜色一般代表对于一个系统我们已知信息的多少,白色代表信息量充足,黑色代表我们其中的构造并不清楚的系统,而灰色介 ...
- 明星不是梦#利用Python进行网站日志分析
网站的访问日志是一个非常重要的文件,通过分析访问日志,能够挖掘出很多有价值的信息.本文介绍如何利用Python对一个真实网站的访问日志进行分析,文中将综合运用Python文件操作.字符串处理.列表.集 ...
- pythonallowpos_利用Python抓取并分析京东商品评论数据
2.1 内容简介 本章主要介绍如何利用Python抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色等颜色, 70B到90D ...
- python实现情感分析_利用python实现简单情感分析
最近选修的大数据挖掘课上需要做关于情感分析的pre,自己也做了一些准备工作,就像把准备的内容稍微整理一下写出来,下次再做类似项目的时候也有个参考. 情感分析是什么? 文本情感分析是指用自然语言处理(N ...
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...
- 《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算(一)
http://www.cnblogs.com/batteryhp/p/5046450.html 对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生 ...
最新文章
- Mybatis 基本配置, 面向接口
- C#基础-应用程序域
- [html] svg如何转为字体图标?
- 计算机网络——CSMA/CD最小帧长相关题目
- 这是可用于下一个项目的React Native工具列表
- Dubbo学习总结(1)——Dubbo入门基础与实例讲解
- MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
- 2022最新教程,半小时速通Git和Github的基本操作。
- macos备份文件服务器地址,mac电脑备份文件的最佳方法
- SQL将Json字符串转为表格
- day07 c++复习 核心编程02 核心内容(1、友元 2、3、继承 )
- Mac系统下连接阿里云并运行java程序
- opencv通过mask取目标纯色背景图
- No qualifying bean of type ‘xxx‘的问题解决方案
- excel服务器客户端在哪个文件夹,excel服务器客户端安装配置
- 腾讯 建造 通天塔 的 帝企鹅
- 如何恢复回收站删除的文件?
- 常见的中间件以及什么是中间件
- Web前端学习第二天---百度图库搜索
- OpenCV系列之特征匹配+单应性查找对象 | 四十五
热门文章
- 实现原理_Condition 实现原理
- 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第7章-Lurie 型动态网络的鲁棒 H 无穷簇同步
- python错误提示“TabError: inconsistent use of tabs and spaces in indentation”
- 异构网络垂直切换算法LTE/WIMAX切换
- 陆基制导系统地面站布设策略
- C++类与static关键字
- svn在commit后报错:is scheduled for addition, but is missing
- html_javascript
- tensorflow省钱方案-ml-engine
- 从JS对象开始,谈一谈“不可变数据”和函数式编程