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的更多相关文章

  1. pandas之groupby分组与pivot_table透视

    一.groupby 类似excel的数据透视表,一般是按照行进行分组,使用方法如下. df.groupby(by=None, axis=0, level=None, as_index=True, so ...

  2. pandas获取groupby分组里最大值所在的行,获取第一个等操作

    pandas获取groupby分组里最大值所在的行 10/May 2016 python pandas pandas获取groupby分组里最大值所在的行 如下面这个DataFrame,按照Mt分组, ...

  3. python处理数据的风骚操作[pandas 之 groupby&agg]

    https://segmentfault.com/a/1190000012394176 介绍 每隔一段时间我都会去学习.回顾一下python中的新函数.新操作.这对于你后面的工作是有一定好处的.本文重 ...

  4. pandas之groupby分组与pivot_table透视表

    zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...

  5. Pandas之groupby分组

    释义 groupby用来分组,调用groupby 之后返回pandas.core.groupby.generic.DataFrameGroupBy,其实就是由一个个格式为(key, 分组后的dataf ...

  6. pandas 之 groupby 聚合函数

    import numpy as np import pandas as pd 聚合函数 Aggregations refer to any data transformation that produ ...

  7. Pandas之groupby( )用法笔记

    groupby官方解释 DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True ...

  8. pandas中groupby的参数:as_index

    参考:https://blog.csdn.net/cjsyr6wt/article/details/78200444?locationNum=11&fps=1 以下是pandas官方的解释: ...

  9. Pandas使用groupby()时是否会保留顺序?

    PythonPandas:使用groupby()和agg()时是否保留了顺序? 看到这个增强问题 简短的答案是肯定的,groupby会保留传入的顺序.你可以用你的例子来证明这一点: df = pd.D ...

随机推荐

  1. 11步教你选择最稳定的MySQL版本

    11步教你选择最稳定的MySQL版本 来源:CSDN 作者:网络 发表于:2012-07-18 08:36 点击: MySQL开源数据库有多个重要分支,目前拥有的分支分别为:MySQL Cluster ...

  2. python脚本攻略之log日志

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  3. React组件(组件属性this.state和this.props,css样式修饰组件)

    目录: 1.创建组件的第一种方式 function2.将组件抽离为单独的jsx文件3.省略.jsx后缀, 配置webpack设置根目录4.创建组件的第二种方式--使用class关键字创建组件5.组件私 ...

  4. PHP回顾(面向对象)

    类中的成员属性不能够用函数为其赋值.public age = rand(1,100);//这是错误的: __get()   __set()  __isset() __unset() final 用来修 ...

  5. 《剑指offer》算法题第六天

    今日题目: 顺时针打印矩阵 包含min函数的栈 栈的压入.弹出序列 从上到下打印二叉树 二叉树搜索树的后序遍历序列 二叉树中和为某一值的路径 今天的题目都比较简单,下面一一介绍: 1. 顺时针打印矩阵 ...

  6. Helvetic Coding Contest 2019

    题目链接:戳我 小注:其中部分(大括号不换行的)代码是BLUESKY007神仙写的. 咕 CF1184 A1 直接枚举,以根号的时间复杂度判断即可.注意x,y都是正整数. #include<io ...

  7. 2019牛客暑期多校训练营(第一场)H 线性基+计算贡献

    题意 给n个整数,求满足子集异或和为0的子集大小之和. 分析 将问题转化为求每个元素的贡献次数之和. 先对n个数求线性基,设线性基大小为r,即插入线性基的数字个数为r,可以分别计算线性基内数的贡献和线 ...

  8. [CSP-S模拟测试]:凉宫春日的忧郁(乱搞)

    题目传送门(内部题101) 输入格式 第一行输入一个整数$T$,表示数据组数. 接下来$T$行,每行两个数$X,Y$,表示$T$组数据. 输出格式 输出共有$T$行,对于每一组数据,如果$X^Y\le ...

  9. Teamviewer解决许可证授权的问题

    提交商业用途表 https://www.teamviewer.com/zhCN/pricing/commercial-use/

  10. Nginx作为静态资源web服务

    一.CDN 1.定义: 内容分发的逻辑网络. 2.作用: CDN能做到传输延时的最小化. CDN请求示意图如下: 二.静态资源需要配置的一些语法模块. 1.配置语法 - 文件读取 Syntax : s ...