首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算数据序列的百分比

计算数据序列的百分比
EN

Stack Overflow用户
提问于 2020-06-13 17:11:13
回答 3查看 420关注 0票数 0

我有一系列的数据,我想计算出与第一次约会相比的增长率值。

代码语言:javascript
复制
Date:   1    2    3    4    5    6 .....
Price:  5    4    8   10   11   12

从第二天开始,我想做((4-5)/5)*100,也就是-20。日期3为(8-5)/5*100,即100%.所以会变成这样

代码语言:javascript
复制
Date:   1    2    3    4    5    6 .....
Price:  0  -20   60  100  120  140

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-13 17:23:44

你可以这样做:

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({"Date": [1, 2, 3, 4, 5, 6],
                    "Price": [5, 4, 8, 10, 11, 12]})


date1 = df.loc[0, "Price"]  # price of first date
df["Price"] = df["Price"].apply(lambda x: ((x-date1)/date1)*100)
print(df)
#   Date  Price
#0     1    0.0
#1     2  -20.0
#2     3   60.0
#3     4  100.0
#4     5  120.0
#5     6  140.0

编辑

这与OP的CSV文件完全匹配,该文件发布在下面的注释中:

代码语言:javascript
复制
df = pd.read_csv("fb_removed.csv", skiprows=1, header=None).reset_index(drop=True)
df = df.T.loc[1:]
df.columns = ["Date", "Price"]

date1 = float(df.iloc[0]["Price"])  # price of first date
df["Price"] = df["Price"].apply(lambda x: ((float(x)-date1)/date1)*100)
print(df.head())
#        Date     Price
#1  2019/6/12  0.000000
#2  2019/6/13  1.388259
#3  2019/6/14  3.593469
#4  2019/6/17  7.981034
#5  2019/6/18  7.672537
票数 0
EN

Stack Overflow用户

发布于 2020-06-13 17:25:20

你可以试试这个:-

代码语言:javascript
复制
data = pd.DataFrame({'date':[1,2,3,4,5,6], 'price':[5,4,8,10,11,12]})

data['price'] = data['price'].transform(lambda x:((x-data['price'].iloc[0])/data['price'].iloc[0])*100).astype(int)

print(data)

产出:-

代码语言:javascript
复制
  date  price
0   1   0
1   2   -20
2   3   60
3   4   100
4   5   120
5   6   140
票数 0
EN

Stack Overflow用户

发布于 2020-06-13 18:05:48

你可以用这样的用词:

代码语言:javascript
复制
d = {1: 5,
     2: 4,
     3: 8,
     4: 10,
     5: 11,
     6: 12}

d2 = {k:((d[k]-5)/5)*100 for k in d.keys()}

print(d2)

输出:

代码语言:javascript
复制
{1: 0.0, 2: -20.0, 3: 60.0, 4: 100.0, 5: 120.0, 6: 140.0}

如果您不想要小数点:

代码语言:javascript
复制
d = {1: 5,
     2: 4,
     3: 8,
     4: 10,
     5: 11,
     6: 12}

d2 = {k:int(((d[k]-5)/5)*100) for k in d.keys()}

print(d2)

输出:

代码语言:javascript
复制
{1: 0, 2: -20, 3: 60, 4: 100, 5: 120, 6: 140}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62363182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档