np的concatenate和pandas的groupby
1. concatenate
concatenate函数可以实现对两个张量进行拼接,这个张量可以实一维向量,二维矩阵等等
1. 首先定义四个列表,然后用concatenate把他们拼接起来,这里我设axis=0
name = ['jack', 'ross', 'john', 'blues', 'frank', 'bitch', 'haha', 'asd', 'loubin']
age = [12, 32, 23, 4,32,45,65,23,65]
married = [1, 0, 1, 1, 0, 1, 0, 0, 0]
gender = [0, 0, 0, 0, 1, 1, 1, 1, 1] matrix = np.concatenate((name, age, married, gender), axis=0)
print(matrix)
运行结果如下
C:\software\Anaconda\envs\ml\python.exe C:/学习/python/科比生涯数据分析/venv/groupy.py
['jack' 'ross' 'john' 'blues' 'frank' 'bitch' 'haha' 'asd' 'loubin' ''
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'' '' '' '' '' '' '' '' '' '']
达到的效果是直接把四个列表给拼接成了一个大的列表,长度是36。下面我们尝试用axis=1来拼接
name = ['jack', 'ross', 'john', 'blues', 'frank', 'bitch', 'haha', 'asd', 'loubin']
age = [12, 32, 23, 4,32,45,65,23,65]
married = [1, 0, 1, 1, 0, 1, 0, 0, 0]
gender = [0, 0, 0, 0, 1, 1, 1, 1, 1] matrix = np.concatenate((name, age, married, gender), axis=1)
运行结果报错如下
C:\software\Anaconda\envs\ml\python.exe C:/学习/python/科比生涯数据分析/venv/groupy.py
Traceback (most recent call last):
File "C:/学习/python/科比生涯数据分析/venv/groupy.py", line 15, in <module>
matrix = np.concatenate((name, age, married, gender), axis=1)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
原因很简单,运行name.shape就可以发现,上面的列表shape属性是(9, ),也就是说他们的shape[0] 是9, 而shape[1]不存在,所以axis=1是对不存在的维度进行
操作。没错axis = k 就可以理解为对shape[k]所代表的维度进行操作。下面我们来验证以下
将以上的列表变成(1, 9)的矩阵,用numpy完成
name = np.array([['jack', 'ross', 'john', 'blues', 'frank', 'bitch', 'haha', 'asd', 'loubin']])
age = np.array([[12, 32, 23, 4,32,45,65,23,65]])
married = np.array([[1, 0, 1, 1, 0, 1, 0, 0, 0]])
gender = np.array([[0, 0, 0, 0, 1, 1, 1, 1, 1]]) matrix = np.concatenate((name, age, married, gender), axis=0)
print(matrix)
运行结果如下,因为这个时候, name,age, married, gender的shape都是(1, 9),所以axis=0时,拼接对shape[0]操作,结果就是(4, 9)的矩阵
C:\software\Anaconda\envs\ml\python.exe C:/学习/python/科比生涯数据分析/venv/groupy.py
[['jack' 'ross' 'john' 'blues' 'frank' 'bitch' 'haha' 'asd' 'loubin']
['' '' '' '' '' '' '' '' '']
['' '' '' '' '' '' '' '' '']
['' '' '' '' '' '' '' '' '']]
试一下将axis改成1,那么结果因该就是(1, 36)的矩阵了
name = np.array([['jack', 'ross', 'john', 'blues', 'frank', 'bitch', 'haha', 'asd', 'loubin']])
age = np.array([[12, 32, 23, 4,32,45,65,23,65]])
married = np.array([[1, 0, 1, 1, 0, 1, 0, 0, 0]])
gender = np.array([[0, 0, 0, 0, 1, 1, 1, 1, 1]]) matrix = np.concatenate((name, age, married, gender), axis=1)
[['jack' 'ross' 'john' 'blues' 'frank' 'bitch' 'haha' 'asd' 'loubin' ''
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
'' '' '' '' '' '' '' '' '' '']]
2.groupby函数
groupyby可以接受datafram的列名作为参数,将原始数据按照列名进行分组。利用第一部分的数据说明
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt name = np.array([['jack', 'ross', 'john', 'blues', 'frank', 'bitch', 'haha', 'asd', 'loubin']])
age = np.array([[12, 32, 23, 4,32,45,65,23,65]])
married = np.array([[1, 0, 1, 1, 0, 1, 0, 0, 0]])
gender = np.array([[0, 0, 0, 0, 1, 1, 1, 1, 1]]) matrix = np.concatenate((name, age, married, gender), axis=0)
matrix = matrix.T data = pd.DataFrame(data=matrix, columns=['name', 'age', 'married', 'gender'])
print(data)
运行结果如下,生成了一个datafram
C:\software\Anaconda\envs\ml\python.exe C:/学习/python/科比生涯数据分析/venv/groupy.py
name age married gender
0 jack 12 1 0
1 ross 32 0 0
2 john 23 1 0
3 blues 4 1 0
4 frank 32 0 1
5 bitch 45 1 1
6 haha 65 0 1
7 asd 23 0 1
8 loubin 65 0 1
在上面的代码基础上再增加以下代码
gs = data.groupby('gender')
print(len(gs)) for g in gs:
print(g)
运行结果如下
2
('', name age married gender
0 jack 12 1 0
1 ross 32 0 0
2 john 23 1 0
3 blues 4 1 0)
('', name age married gender
4 frank 32 0 1
5 bitch 45 1 1
6 haha 65 0 1
7 asd 23 0 1
8 loubin 65 0 1)
通过data.groupy('gender')生成了一个分类器gs,但是gs不能直接展示数据,要通过for循环来获取gs中的数据。这里运行len(gs)可以发现gs的长度时2,因为gender
属性只有两个值,所以gs的长度就是类别数。然后对于gs中的每一个g,是一个元组,由两部分组成,第一部分是类别值,第二部分是该类别下的datafram数据集。
np的concatenate和pandas的groupby的更多相关文章
- pandas之groupby分组与pivot_table透视
一.groupby 类似excel的数据透视表,一般是按照行进行分组,使用方法如下. df.groupby(by=None, axis=0, level=None, as_index=True, so ...
- pandas获取groupby分组里最大值所在的行,获取第一个等操作
pandas获取groupby分组里最大值所在的行 10/May 2016 python pandas pandas获取groupby分组里最大值所在的行 如下面这个DataFrame,按照Mt分组, ...
- python处理数据的风骚操作[pandas 之 groupby&agg]
https://segmentfault.com/a/1190000012394176 介绍 每隔一段时间我都会去学习.回顾一下python中的新函数.新操作.这对于你后面的工作是有一定好处的.本文重 ...
- pandas之groupby分组与pivot_table透视表
zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...
- Pandas之groupby分组
释义 groupby用来分组,调用groupby 之后返回pandas.core.groupby.generic.DataFrameGroupBy,其实就是由一个个格式为(key, 分组后的dataf ...
- pandas 之 groupby 聚合函数
import numpy as np import pandas as pd 聚合函数 Aggregations refer to any data transformation that produ ...
- Pandas之groupby( )用法笔记
groupby官方解释 DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True ...
- pandas中groupby的参数:as_index
参考:https://blog.csdn.net/cjsyr6wt/article/details/78200444?locationNum=11&fps=1 以下是pandas官方的解释: ...
- Pandas使用groupby()时是否会保留顺序?
PythonPandas:使用groupby()和agg()时是否保留了顺序? 看到这个增强问题 简短的答案是肯定的,groupby会保留传入的顺序.你可以用你的例子来证明这一点: df = pd.D ...
随机推荐
- Linux和其他机器共享文件
在实际当中,Linux服务器在公网上,我们的windows电脑在局域网中,因此这个共享并不实际. 安装vsftpd 注:安装之后需要验证ftp是否工作,这时应该在本机验证,而不应该在windows电脑 ...
- MacBook pro管理员变成普通用户无法解锁问题
最近使用Mac的时候,把管理员的名字修改了一下,WTF?没有管理员权限了?然后就没有解锁权限了,这可以说是Mac的一个致命bug呀!下载软件也不可以了.具体我的解决方式在这里记录一下,以供和我遇到同样 ...
- WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商
在网上查资料闲逛,偶然间看到了张戈博客的评论框有点意思,于是就收走拿到了我的米扑博客. 本文为米扑博客原创:总结分享 WordPress显示评论者IP归属地.浏览器.终端设备.电信运营商 WordPr ...
- cmd中实现代码雨的命令。。。
颜色修改时不能使用十六进制数 @echo off title digitalrain color 0b setlocal ENABLEDELAYEDEXPANSION for /l %%i in (0 ...
- 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像内容识别
程序环境为高性能集群:CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In ...
- Nexus3.x帐号权限配置
一.使用admin登录后,点击上方齿轮图标 二.打开左侧导航,Security Privileges:具体的权限明细,比如我创建一个test仓库,这里就会生成 Roles:添加角色,设置每个角色可看到 ...
- 卸载阿里云盾(安骑士)监控&屏蔽云盾IP
卸载阿里云盾监控 wget http://update.aegis.aliyun.com/download/uninstall.sh chmod +x uninstall.sh ./uninstall ...
- 一、Vue基础之常用方法
一.JSON.parse() 与 JSON.stringify() 1.JSON.parse() :是从一个字符串中解析出 json 对象 //定义一个字符串 var data='{"nam ...
- python内存泄露memory leak排查记录
问题描述 A服务,是一个检测MGR集群主节点是否发生变化的服务,使用python语言实现的. 针对每个集群,主线程会创建一个子线程,并由子线程去检测.子线程会频繁的创建和销毁. 上线以后,由于经常会有 ...
- 运维之思科篇——NAT基础配置
一. NAT(网络地址转换) 1. 作用:通过将内部网络的私有IP地址翻译成全球唯一的公网IP地址,使内部网络可以连接到互联网等外部网络上. 2. 优点: 节省公有合法IP地址 处理地址重叠 增强灵活 ...