我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pandas常规操作有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pandas常规操作有哪些

这篇文章主要介绍了pandas常规操作有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一 聚合函数

1. numpy、pandas使用的统计方式
在数组中经常使用的聚合方式data[['counts', 'ches_name']].agg([np.mean, np.std])agg({'xx':np.mean, 'xx2':[np.sum, np.std]})
2. 在pandas或者numpy中没有现成的函数可以使用,可以使用transform自定义函数

如: 将指定列的全部数据 * 2

方式一data['counts'].transform(lambda x: x*2)
方式二:按照函数内既定的规则,进行指定数据的操作def transform_func(values):"""自定义函数,定义数据操作规则"""return values*2data['counts'].transform(transform_func)   # 一维data1 = data.groupby(by='品牌')['销售额'].transform(tran_func)  # 分组之后自定义聚合

推荐好课:Python 自动化办公

二 透视表 - pivot_table

源码参数分析def pivot_table(    data,             # Dataframe,对哪张表进行操作    values=None,      # 显示的字段    index=None,       # 行分组键,可以是数组,列表,如果是数组,必须有一样的长度    columns=None,      # 列分组键    aggfunc="mean",    # 聚合函数, 默认是mean    fill_value=None,   # 填充空值, 将为Nan的值填充为对应的值    margins=False,     # 汇总开关,默认是False    dropna=True,     margins_name="All", # 汇总的列或者行的bolumns,可以指定修改名称    observed=False,
1、index: 行分组键,分完组后,分组键的取值在行索引的位置上
pd.pivot_table(data, index=['order_id', 'dishes_name'], aggfunc=[np.mean, np.sum], values=['add_inprice', 'counts'])                                mean                sum                                add_inprice counts add_inprice countsorder_id dishes_name                                          137      农夫山泉NFC果汁100%           0      1           0      1         凉拌菠菜                      0      1           0      1         番茄炖牛腩\r\n                 0      1           0      1         白饭/小碗                     0      4           0      4         西瓜胡萝卜沙拉                   0      1           0      1...                              ...    ...         ...    ...1323     番茄炖秋葵                     0      1           0      1         芝士烩波士顿龙虾                  0      1           0      1         芹黄鳝丝                      0      1           0      1         蒜蓉生蚝                      0      1           0      1         谷稻小庄                      0      1           0      1[2778 rows x 4 columns]
2、columns: 列分组键,分完组后,分组键的取值在列索引上
pd.pivot_table(data, columns= ['order_id', 'amounts'], aggfunc=[np.mean, np.sum], values=['add_inprice', 'counts'])# 列分组键,可以说是行分组键的转置            mean                                ...  sum                        order_id    137                           165   ... 1323                        amounts      1    6    26   27   35   99   9    ...  39  49  58  65  78  80  175add_inprice  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...    0   0   0   0   0   0   0counts       4.0  1.0  1.0  1.0  1.0  1.0  1.5  ...    1   1   1   1   1   1   1[2 rows x 4956 columns]
3、结合使用
# aggfunc 聚合函数# fill_value 为空的,怎么显示,默认为Nan# margins 汇总,默认是不汇总# margins_name 汇总列或者行字段名称,默认为allpd.pivot_table(data, index=['dishes_name'], columns='order_id', values='counts', aggfunc=np.sum, fill_value=0, margins=True, margins_name='总')dishes_name   42度海之蓝   北冰洋汽水   38度剑南春   50度古井贡酒  ...  黄油曲奇饼干  黄花菜炒木耳  黑米恋上葡萄     总order_id                                         ...                              137                0        0        0        0  ...       0       0       0     9165                0        0        1        0  ...       0       1       0    21166                0        0        0        0  ...       0       0       0     7171                0        0        0        0  ...       0       0       0    10177                0        0        0        0  ...       0       0       0     4...              ...      ...      ...      ...  ...     ...     ...     ...   ...1314               0        0        1        0  ...       0       0       0    121317               0        0        0        0  ...       0       0       0    181319               0        0        0        0  ...       0       0       0     91323               0        0        1        0  ...       0       0       0    15总                  5       45        6        5  ...       5      15      18  3088

推荐好课:Python 自动化管理

三 交叉表-crosstab

def crosstab(    index,   # 行分组键    columns,  # 列分组键    values=None,   # 显示的字段    rownames=None,    # 行name    colnames=None,     # 列name    aggfunc=None,      # 聚合函数    margins=False,      # 汇总    margins_name: str = "All",   # 汇总列或者行的名称    dropna: bool = True,    normalize=False,
基本语法
pd.crosstab(index = data['dishes_name'], columns=data['order_id'], values=data['counts'], aggfunc = np.sum)dishes_name   42度海之蓝   北冰洋汽水   38度剑南春   ...  黄油曲奇饼干  黄花菜炒木耳  黑米恋上葡萄order_id                                ...                        137              NaN      NaN      NaN  ...     NaN     NaN     NaN165              NaN      NaN      1.0  ...     NaN     1.0     NaN166              NaN      NaN      NaN  ...     NaN     NaN     NaN171              NaN      NaN      NaN  ...     NaN     NaN     NaN177              NaN      NaN      NaN  ...     NaN     NaN     NaN...              ...      ...      ...  ...     ...     ...     ...1309             NaN      NaN      NaN  ...     NaN     NaN     NaN1314             NaN      NaN      1.0  ...     NaN     NaN     NaN1317             NaN      NaN      NaN  ...     NaN     NaN     NaN1319             NaN      NaN      NaN  ...     NaN     NaN     NaN1323             NaN      NaN      1.0  ...     NaN     NaN     NaN[278 rows x 156 columns]

四 表格合并

1、每个表的列都相同,pd.concat((df1, df2, df3 … ))

axis = 0 : 纵向合并axis = 1:横向合并,索引对应合并

函数源码def concat(    objs: Union[Iterable["NDFrame"], Mapping[Label, "NDFrame"]], # 传入的是Df格式    axis=0,          # 进行合并的方向    join="outer",    # 默认使用的外连接    ignore_index: bool = False,  # 重置排序索引    keys=None,    levels=None,    names=None,    verify_integrity: bool = False,    sort: bool = False,    copy: bool = True,
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K3'],                     'key2': ['K0', 'K1', 'K0', 'K1'],                         'A': ['A0', 'A1', 'A2', 'A3'],                         'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],                       'key2': ['K0', 'K0', 'K0', 'K0'],                          'C': ['C0', 'C1', 'C2', 'C3'],                          'D': ['D0', 'D1', 'D2', 'D3']}) pd.concat((left, right), axis = 0, join = 'inner') # 指定使用内连接,进行合并,默认使用的是outer pd.concat((left, right), axis = 1, join = 'inner')
2、 表合并,解决行索引没有意义情况下,数据行不匹配问题(解决concat横向拼接问题)
def merge(    left,                # 左表    right,               # 右表    how: str = "inner",    # 默认是内连接,    on=None,               # 必须是两张表中有公共的主键,才能作为主键    left_on=None,          # 左表主键    right_on=None,         # 右表主键    left_index: bool = False,    right_index: bool = False,    sort: bool = False,    suffixes=("_x", "_y"),    copy: bool = True,    indicator: bool = False,    validate=None,

(1) 两表中有相同的主键

on 连接的主键,两表中共有的主键how 连接的方式,默认使用的是内连接outer外连接,返回全部     inner内连接返回等值连接     left以左表为主     right以右表为主pd.merge(left, right, on='key1', how='outer')  key1 key2_x    A    B key2_y    C    D0   K0     K0   A0   B0     K0   C0   D01   K0     K1   A1   B1     K0   C0   D02   K1     K0   A2   B2     K0   C1   D13   K1     K0   A2   B2     K0   C2   D24   K3     K1   A3   B3    NaN  NaN  NaN5   K2    NaN  NaN  NaN     K0   C3   D3
多个相同主键连接pd.merge(left, right, on=['key1', 'key2'], how='outer')  key1 key2    A    B    C    D0   K0   K0   A0   B0   C0   D01   K0   K1   A1   B1  NaN  NaN2   K1   K0   A2   B2   C1   D13   K1   K0   A2   B2   C2   D24   K3   K1   A3   B3  NaN  NaN5   K2   K0  NaN  NaN   C3   D3

(2) 两表中没有相同的主键

left_on   : 指定左表中的主键right_on  : 指定右表中的主键pd.merge(left, right, left_on = 'key1', right_on = 'key2', how='outer')  key1_x key2_x   A   B key1_y key2_y    C    D0     K0     K0  A0  B0     K0     K0   C0   D01     K0     K0  A0  B0     K1     K0   C1   D12     K0     K0  A0  B0     K1     K0   C2   D23     K0     K0  A0  B0     K2     K0   C3   D34     K0     K1  A1  B1     K0     K0   C0   D05     K0     K1  A1  B1     K1     K0   C1   D16     K0     K1  A1  B1     K1     K0   C2   D27     K0     K1  A1  B1     K2     K0   C3   D38     K1     K0  A2  B2    NaN    NaN  NaN  NaN9     K3     K1  A3  B3    NaN    NaN  NaN  NaN

(3) 更改表格名称的方法

left.rename(columns={'key1': 'key11111'}, inplace=True)print(left)  key11111 key2   A   B

(4) 重叠合并,目的是将残缺的表,合并为完整的表df1.combine_first(df2)

主表.combine_first(附表)dict1 = {'ID':[1,2,3,4,5,6,7,8,9],    'System':['W10','w10',np.nan,'w10',np.nan,np.nan,'w7','w7','w8']}dict2 = {'ID':[1,2,3,4,5,6,7,8,9],     'System':[np.nan,np.nan,'w7','w7','w7','w7','w8',np.nan,np.nan]} df1 = pd.DataFrame(dict1) df2 = pd.DataFrame(dict2) print(df1,df2) # 谁在前,为主表,主表中没有的补全,有的值,不动 print(df1.combine_first(df2))     ID System 0 1 W10 1 2 w10 2 3 w7 3 4 w10 4 5 w7 5 6 w7 6 7 w7 7 8 w7 8 9 w8

感谢你能够认真阅读完这篇文章,希望小编分享的“pandas常规操作有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pandas常规操作有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pandas常规操作有哪些

这篇文章主要介绍了pandas常规操作有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 聚合函数1. numpy、pandas使用的统计方式在数组中经常使用的聚合方式d
2023-06-27

YARN常用操作有哪些

这篇文章将为大家详细讲解有关YARN常用操作有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。YARN (Yet Another Resource Negotiator,另一种资源协调者)是一 种新的
2023-06-27

kvm常用操作有哪些

小编给大家分享一下kvm常用操作有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!KVM (全称是 Kernel-based Virtual Machine)
2023-06-28

FreeBSD常用操作有哪些

这篇“FreeBSD常用操作有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“FreeBSD常用操作有哪些”文章吧。1.
2023-06-27

Nginx常用操作有哪些

这篇文章主要介绍“Nginx常用操作有哪些”,在日常操作中,相信很多人在Nginx常用操作有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx常用操作有哪些”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-27

gsettings中常用操作有哪些

这篇文章主要为大家展示了“gsettings中常用操作有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“gsettings中常用操作有哪些”这篇文章吧。gsettings提供了对GSeting
2023-06-12

Shell有哪些常用操作符

这篇文章主要讲解了“Shell有哪些常用操作符”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell有哪些常用操作符”吧!一、算术操作代码如下: + - * / %
2023-06-09

Docker Swarm常用操作有哪些

本篇内容主要讲解“Docker Swarm常用操作有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker Swarm常用操作有哪些”吧!Docker Swarm 是 Docker 的集
2023-06-27

Vim中的常用操作有哪些

这篇文章主要讲解了“Vim中的常用操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vim中的常用操作有哪些”吧!Vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的
2023-06-27

web前端常用操作有哪些

这篇文章主要讲解了“web前端常用操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端常用操作有哪些”吧!取消 ul li 前面的图标 1 清空Value值 1 设置Value
2023-06-08

Git常用操作命令有哪些

本篇内容介绍了“Git常用操作命令有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Git 概念Git 是一个开源的分布式版本控制系统
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录