使用 pandas 进行计算
Calculations using pandas
我正在尝试学习如何使用 python,但我以前从未使用过 pandas。我想使用 excel 数据创建一个简单的计算 - 这是 excel 数据的示例:
Example Data
有 3 列,唯一 ID、车辆和时间。
我知道如何在 python 上制作一个简单的计算器,我必须在其中手动输入这些值,但是是否可以直接从列中提取数据以进行计算?
理想情况下,它会先获取 ID 本身,然后是带薪的车辆类型(代码中定义的薪水,例如 Bike = 15.00),乘以小时数得出总薪水?
编号:28392
交通工具:自行车
小时数:40
总计:600 美元
希望这是有道理的,提前致谢!
首先,您需要将数据集加载到 pandas 数据框中,您可以使用以下命令执行此操作。
import pandas as pd
df = pd.read_excel('name_of_file_here.xlsx',sheet_name='Sheet_name_here')
所以您的 excel 数据现在是一个名为 df 的 pandas 数据框。
如果所有车辆的支付率都相同,您可以执行以下操作。
rate = 15
df['Pay'] = df['Hours']*rate
这会在您的数据框中创建一个名为 'Pay' 的新列,并将 15 的比率乘以小时列中的每一行。
但是,如果不同车辆类型的费率不同,您可以执行以下操作。
bike_rate = 15
df[df['Vehicle']=='Bike'] = df[df['Vehicle']=='Bike']*bike_rate
cargo_bike_rate = 20
df[df['Vehicle']=='Cargo-Bike'] = df[df['Vehicle']=='Cargo-Bike']*cargo_bike_rate
这将 select 数据框中的行,其中 vehicle 等于您想要的任何类型并对这些行进行操作。
我认为另一种方法也是最好的方法是使用函数。
def calculate_pay(vehicle,hours):
if vehicle == 'Bike':
rate = 15
elif vehicle == 'Cargo-Bike':
rate = 20
#And so on ....
else:
rate = 10
return hours*rate
然后您可以将此函数应用于您的数据框。
df['Pay'] = df.apply(lambda x: calculate_pay(x['Vehicle'],x['Hours']),axis=1)
这会在您的数据框中创建一个名为 'Pay' 的新列,并应用一个名为 calculate_pay 的函数,该函数从数据框中获取输入车辆和小时数以及 returns 工资。
要在屏幕上打印结果,如果您使用的是 jupyter notebook,只需键入 df 并输入,或者 select 您在评论中提到的特定列,您可以执行以下操作。
df[['Id','Vehicle','Hours','Pay']]
要保存回 excel,您可以执行以下操作
df.to_excel('output.xslx')
我正在尝试学习如何使用 python,但我以前从未使用过 pandas。我想使用 excel 数据创建一个简单的计算 - 这是 excel 数据的示例:
Example Data
有 3 列,唯一 ID、车辆和时间。
我知道如何在 python 上制作一个简单的计算器,我必须在其中手动输入这些值,但是是否可以直接从列中提取数据以进行计算?
理想情况下,它会先获取 ID 本身,然后是带薪的车辆类型(代码中定义的薪水,例如 Bike = 15.00),乘以小时数得出总薪水?
编号:28392
交通工具:自行车
小时数:40
总计:600 美元
希望这是有道理的,提前致谢!
首先,您需要将数据集加载到 pandas 数据框中,您可以使用以下命令执行此操作。
import pandas as pd
df = pd.read_excel('name_of_file_here.xlsx',sheet_name='Sheet_name_here')
所以您的 excel 数据现在是一个名为 df 的 pandas 数据框。
如果所有车辆的支付率都相同,您可以执行以下操作。
rate = 15
df['Pay'] = df['Hours']*rate
这会在您的数据框中创建一个名为 'Pay' 的新列,并将 15 的比率乘以小时列中的每一行。
但是,如果不同车辆类型的费率不同,您可以执行以下操作。
bike_rate = 15
df[df['Vehicle']=='Bike'] = df[df['Vehicle']=='Bike']*bike_rate
cargo_bike_rate = 20
df[df['Vehicle']=='Cargo-Bike'] = df[df['Vehicle']=='Cargo-Bike']*cargo_bike_rate
这将 select 数据框中的行,其中 vehicle 等于您想要的任何类型并对这些行进行操作。
我认为另一种方法也是最好的方法是使用函数。
def calculate_pay(vehicle,hours):
if vehicle == 'Bike':
rate = 15
elif vehicle == 'Cargo-Bike':
rate = 20
#And so on ....
else:
rate = 10
return hours*rate
然后您可以将此函数应用于您的数据框。
df['Pay'] = df.apply(lambda x: calculate_pay(x['Vehicle'],x['Hours']),axis=1)
这会在您的数据框中创建一个名为 'Pay' 的新列,并应用一个名为 calculate_pay 的函数,该函数从数据框中获取输入车辆和小时数以及 returns 工资。
要在屏幕上打印结果,如果您使用的是 jupyter notebook,只需键入 df 并输入,或者 select 您在评论中提到的特定列,您可以执行以下操作。
df[['Id','Vehicle','Hours','Pay']]
要保存回 excel,您可以执行以下操作
df.to_excel('output.xslx')