精华内容
下载资源
问答
  • Python DataFrame的除法计算变化率

    千次阅读 2019-10-08 15:19:32
    期望在DataFrame中增加,代表的含义是变化率,计算公式是(今天的数据-昨天的数据)/昨天的数据。 输入: a b c 0 1.0 4.0 5.0 1 3.0 8.0 45.0 2 13.0 3.0 67.0 3 2.0 0.0 34.0 期望输出: a b c d 0 1......

    期望在DataFrame中增加一列,代表的含义是变化率,计算公式是(今天的数据-昨天的数据)/昨天的数据。

    输入:

          a    b     c
    0   1.0  4.0   5.0
    1   3.0  8.0  45.0
    2  13.0  3.0  67.0
    3   2.0  0.0  34.0

    期望输出:

          a    b     c         d
    0   1.0  4.0   5.0 -0.750000
    1   3.0  8.0  45.0 -0.625000
    2  13.0  3.0  67.0  3.333333
    3   2.0  0.0  34.0       inf

     实现方法:

    import pandas as pd
    
    data1 = {"a": [1., 3., 13., 2.],
             "b": [4., 8., 3., 0.],
             "c": [5., 45., 67., 34]}
    
    df1 = pd.DataFrame(data1)
    df1['d'] = (df1['a'] - df1['b']) / df1['b']

     

    展开全文
  • 2. 将日期划分为上、、下旬并作为新 代码 1.按col_night,col_day,col_whole三的值生成标志字段rs_flag,并取它们的最大值为新值字段rs_value 用loc函数;每个条件语句要用();用df.max函数;对于赋值不...

    需求

    从excel读取数据用DataFrame存储,

    1. 逐行处理,当指定多列的值满足一定条件时,取这几列的某个值作为该行的新列值.

    2. 将日期划分为上、中、下旬并作为新列

    知识点

    1. np.where是好理解好用的函数,可以当if else的用,当某列满足一个条件时取某列的值,否则取其他列的值。像excel里的if函数,可以嵌套使用。参考python条件赋值numpy.where() 用法详解

    2.直接用df[条件语句][列名]也可以选出符合条件的列值,如:

    df['新列名']=df[(df['列A']<=3)|(df['列B'].isin(['Chicago','Boston']))]['列C']

    将符合(df['列A']<=3)|(df['列B']=='Chicago')的列C值赋给新列。

    也可以直接用几个条件语句的真假结果赋值给一个新列,如:

    df['新列名']=(df['列A']<=3)|(df['列B'].isin(['Chicago','Boston']))

    也可以用loc函数。

    3.df.max也是个好用的函数,可以取同一行几列值中最大的,也可以取同一列中最大的。

    代码

    1.按col_night,col_day,col_whole三列的值生成标志字段rs_flag;当col_whole>=50时取它自己,否则取其他两个的最大值为新值字段rs_value

    用loc函数;每个条件语句要用();用df.max函数;对于赋值不来自原有字段的,先赋值为数字,便于后续计算,再按条件修改

    #增加字段rs_flag, rs_value
    
    #只要col_night,col_day,col_whole有一个达到条件就记为1,下面的条件语句必须加()
    
    data['rs_flag' ] = 0
    
    data.loc[ (data[col_night]>=30) | (data[col_day]>=30) | (data[col_whole]>=50) , 'rs_flag' ] = 1
    
    #rs_value取同一行这几列的最大值
    
    #这个又犯了将不同条件放在一起比较的错误,大于30的和大于50的条件不同,可能取出的最大值并不一定大于50  data.loc[ (data[col_night]>=30) | (data[col_day]>=30) | (data[col_whole]>=50) , 'rs_value']=data[[col_night,col_day,col_whole]].max(axis=1)
                data['rs_value']=np.where(data[col_whole]>=50, data[col_whole], np.where((data[col_night]>=30) | (data[col_day]>=30),data[[col_night,col_day]].max(axis=1),0))

    2.根据日dd字段生成旬字段dd_xun,类似于SQL的case when;if else嵌套使用; 用df.apply函数,用lambda函数,注意语法

    #增加dd_xun字段
    
    data['dd_xun'] = data['dd'].apply(lambda x: '上旬' if x<=10 else '中旬' if x<=20 else '下旬')

     

    展开全文
  • python中,普通的列表list和numpy中的数组array是不一样的,最大的不同是:一个列表中可以存放不同类型的数据,包括int、float和str,甚至布尔型;而一个数组中存放的数据类型必须全部相同,int或float。 在list中...
  • 本文主要演示pandasDataFrame对象corr()方法的用法,该方法用来计算DataFrame对象所有之间的相关系数(包括pearson相关系数和spearman相关系数)。 perason描述的是两个变量之间的线性相关性,当相关系数等于1...

    本文主要演示pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数和spearman相关系数)。

    perason描述的是两个变量之间的线性相关性,当相关系数等于1时,为正相关,x和y正好散落在直线上,并且变量y随着x的增加而增加,当相关系数等于-1时,为负相关,x和y很好的散落在直线上,变量y随着x的增大而减小,当相关系数为0时,两个变量之间互不相关。
    (皮尔森相关系数百度介绍:https://baike.baidu.com/item/Pearson%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/6243913?fr=aladdin)

    speraman则描述的是两个变量之间的单调性(斯皮尔曼相关系数百度:https://baike.baidu.com/item/spearman%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/7977847?fr=aladdin)

    直接来干货:
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    from scipy import linalg
    data1=pd.read_csv(r’data_new.csv’,header=None)
    data1.head(5)
    这是众多数据中的前5行数据,这里的第8列为目标集,查看其它列与8列之间的相关性#这里只分析1~8列
    data2=data1.loc[:,1:]
    #这里查看各列与第8列之间的相关性
    data2.corr(method=‘spearman’)
    这里能看到各列之间的详细的各列之间关联系数,此处能看到第7列与第8列关联系数最大为0.692
    下面是用皮尔森查看关联系数的截图
    在这里插入图片描述

    展开全文
  • Python学习笔记 – Pyhthon pandas 如何基于一或多运算并生成新的 在数据处理,通过前面几列的运算生成一个新。 最常见的例子是计算成绩 : ) 1.eval() eval是最直接的 举个栗子: 我们这里就用最常见需要...

    Python学习笔记 – Pyhthon pandas 如何基于一列或多列运算并生成新的列

    在数据处理中,通过前面几列的运算生成一个新列。
    最常见的例子是计算成绩 : )

    1.eval()
    eval是最直接的
    举个栗子:
    我们这里就用最常见需要增加列的情景之一 成绩统计~
    已经有每一门学科的成绩,需要在最后新增一列总分:

    df = pd.DataFrame({'math':[89,78,83],'physics':[76,84,96],'chemistry':[87,81,92]})
    df.index =["tom","mark","ann"]
    print (df)
    df.eval('Total = math + physics + chemistry', inplace = True)
    print (df)
    

    运行结果

    此时通过运行结果可以看出,已经出现新的一列"Total"
    inplace参数表示是否在原数据上进行操作,如果inplace = Flase,则会生成新的DataFrame。

    2.apply()
    apply来添加列也很常见好用
    承接上面的例子,我们还想新增一列看看每个人的平均分:

    df ["Ave"] = df.Total.apply(lambda x: round(x/3))
    

    运行结果
    这里的"x"是指Total列的值,也可以写成 df[“Total”].apply
    通过运行结果可以看出已经增加新的一列"Ave"

    3.map()
    还有一种情况用map可以解决。如果涉及到需要使用多个条件语句的时候(如在成绩中需要分出优良中差),用前面两种方法会显得在括号里面的内容过多,导致代码看着比较乱,这时用map就相对清晰明了(ง •_•)ง

    def total_allocate(n):
        if n > 270:
            return "excellent job"
        elif 250 < n < 270:
            return "good job"
        else:
            return "need to progress"
    df ["Comment"] = df.Total.map(total_allocate)
    

    运行结果
    同上,df.Total.map也可以写成 df[“Total”].map

    总结了三种添加新的列的方法,在今后的学习中如果遇见了其他的方法更适合解决某类问题也会在这里更新哒!(。・∀・)ノ

    展开全文
  • Python Cookbook

    2013-07-31 22:33:26
    4.20 在Python中使用printf 174 4.21 以指定的概率获取元素 174 4.22 在表达式中处理异常 176 4.23 确保名字已经在给定模块中被定义 178 第5章 搜索和排序 180 引言 180 5.1 对字典排序 185 5.2 不区分大小...
  • python_函数

    2018-04-06 22:21:00
     计算机函数跟数学的函数不一样,计算机函数指的是提前组织好的,可重复使用的一段子程序,或者说是一段可执行的代码过程。 作用:  1、提高代码的模块性,提高代码的重复利用性。  2、减少重复代码  ...
  • 注意j是重1开始的,因为theta(0)为一个常数项,X最前面一会加上11,所以乘积还是theta(0),feature没有关系,没有必要正则化 正则化后的代价: # 代价函数 def costFunction(initial_theta,X,y,inital_lambda)...
  • Python数据分析实战

    千次阅读 多人点赞 2020-06-11 14:42:48
    增加列字段“等级”,标注每人“总分”的“优、良、、及格、差”(270≤优,240≤良, 210≤,及格≤180,差≤180); 计算各门课程的平均成绩以及标准差; 做"总分"成绩分布图,纵坐标表示成绩,横坐标表示...
  • Python -- 蛇形填数

    2021-04-12 20:30:02
    python–蛇形填数 ...请你计算矩阵第 20 行第 20 的数是多少? 分析: n行n的各个元素依次为:1,5,13,25,41… 由此可见每次增加4的n倍 代码: n = 20 an = 1 for i in range(1,20): an = an+4*i #20个
  • 字典的成员资格判断 in not in 运算符 用in运算符可以判断一个键是否存在与字典,如果存在...列表的in运算符计算时间会因为列中元素个数增加增加。列表元素越多,判断越慢。 【因为其为顺序存储,需要按顺序...
  • import numpy as np import pandas as pd import math 任务1:企业收入的多样性 ...现请利用后一张表中的数据,在前一张表中增加表示该公司该年份的收入熵指标I 思路: 1.将company_data表转换位
  • 前言 自动化测试我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,...注:openpyxl操作excel时,行号和号都是从1开始计算的 封装代码 ------------------------------------
  • Vogel法简介 伏格尔 (Vogel) 法又称差值法。...使用Vogel法时,先计算出各行各列中的罚数(最小的成本系数cij和次小的成本系数cij之间的差的绝对值),在具有最大罚数的行/列中,选择具有最小的cij的方格来填入基变量值
  • 出受管区域的所有记录 检查是否有SOA记录 检查是否存在现有的子域记录 从myexternalip.com查询外部IP地址 检查我们的IP是否已更改 创建一个新的SOA记录(序列号增加) 为给定的子域创建新的A记录 发送变更请求
  • 螺栓会增加机器的生产数量并更新温度值,该温度值存储在MongoDB。 一个非常简单的Meteor.js应用程序显示了计算机统计信息的仪表板。 玩具机消息数据是由Simulator / simulation.py生成的。 Parse.ly的...
  • 接口地址和对应请求 path 定义在 ReportDataNew.js ,这个出部分代码: const rank_host = (GameData.Conf.DATA_STORAGE_ENV == 1 ? GameData.HttpApi.RELEASE_HOST : GameData.HttpApi.ALPHA_HOST); // 排行榜...
  • MYSQL中文手册

    2013-03-11 21:21:34
    言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 ...13.3.1. DESCRIBE语法(获取有关的信息) 13.3.2. USE语法 13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法...
  • MySQL中文参考手册

    2010-08-10 22:11:55
    18.20 怎样改变一个表中列的次序 19 解决MySQL 一些常见的问题 19.1 数据库复制 19.2 数据库备份 19.3 在同一台机器上运行多个 MySQL 服务器 20 MySQL 客户工具和 API 20.1 MySQL C API 20.2 C API数据类型 ...
  • 2.7. 在其它类Unix系统安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...
  • MySQL 5.1中文手冊

    2009-12-11 09:43:12
    2.7. 在其它类Unix系统安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...
  • mysql5.1中文手册

    2008-01-09 09:54:20
    在其它类Unix系统安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 ...
  • MySQL中文参考手册.chm

    热门讨论 2007-06-11 21:31:17
    8.4.4.3 选择特定 8.4.4.4 排序行 8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 ...
  • 2.7. 在其它类Unix系统安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

python中增加计算列

python 订阅