05.Pandas四种新增数据列

简单介绍

在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行一步一步分析,常用的有四种新增数据列
1.直接赋值
2.df.apply
3.df.assign
4.按条件选择分组分别赋值

读取csv数据到dataFrame

数据如下

ymd,bWenDu,yWenDu,tianQi,fengXiang,fengJi,aqi,aqiInfo,aqLevel
2018-01-01,3°C,-5°C,🌤,东北风,1-2级,59,良,2
2018-02-22,6°C,-4°C,☀,西南风,2-3级,66,良,1
2018-02-03,4°C,-5°C,☼,西风,5-6级,39,优,1
2018-04-05,5°C,-2°C,☂,北风,1-2级,43,优,1
2019-02-01,2°C,-6°C,☁,南风,1-2级,27,良,2
2019-10-23,3°C,-1°C,🌤,东风,1-2级,18,良,2

读取代码

import pandas as pd
fpath = "../data/tianqi.csv"
df = pd.read_csv(fpath)
print(df.head())

直接赋值方法

案例:计算温差

# 处理数据,先将温度后缀去掉,变成数字类型
df.loc[:, "bWenDu"] = df["bWenDu"].str.replace("°C", "").astype('int32')
df.loc[:, "yWenDu"] = df["yWenDu"].str.replace("°C", "").astype('int32')

# 计算温差
# df["bWenDu"] 其实是一个Series,后面的减法返回的也是一个Series
# df["wencha"] = df["bWenDu"] - df['yWenDu']
df.loc[:,"wencha"] = df["bWenDu"] - df['yWenDu']
print(df)

在这里插入图片描述

使用df.apply方法

案例:添加一列温度类型
1.如果最高温度大于3度就是高温
2.低于-2度就是低温
3.否则就是常温
代码如下

def get_wendu_type(x):
    if x["bWenDu"] > 3:
        return "高温"
    if x["yWenDu"] > -10:
        return "低温"
    return "常温"

# 注意需要设置axis==1,这是series的index是colums
df.loc[:, "wendu_type"] = df.apply(get_wendu_type, axis=1)
print(df)

在这里插入图片描述
在这里插入图片描述

使用df.assign方法

在这里插入图片描述

df.assign(
    yWenDu_huashi=lambda x: x['yWenDu'] * 9 / 5 + 32,
    # 摄氏度转华氏度
    bWenDu_Huashi=lambda x: x["bWenDu"] * 9 / 5 + 32
)
print(df.head())

在这里插入图片描述

按条件选择分组分别赋值

在这里插入图片描述

df['wencha_type'] = ''
df.loc[df["bWenDu"] - df["yWenDu"] > 7, "wencha_type"] = "温差大"
df.loc[df["bWenDu"] - df["yWenDu"] <= 7, "wencha_type"] = "温差正常"
print(df["wencha_type"].value_counts())

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值