python panda excel_Python Pandas操作Excel

Python Pandas操作Excel

前情提要

本章使用的 Python3.6 Pandas==0.25.3

项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日文...等多国语言的校验

操作麻烦 后改进的操作方式

Pandas中文文档

# 安装pandas

# -i https://pypi.douban.com/simple/ 国内镜像加速

pip insatll pandas==0.25.3 -i https://pypi.douban.com/simple/

操作Excel文件/获取列数据

"""

################ Rudy ################

############# 2021-01-22 #############

"""

import pandas as pd

def get_excel(path_load):

df1 = pd.read_excel(path_load) # 读取excel

df2 = df1.dropna(how='all') # 数据清洗,为完成需求删去不必要的行

df2 = df2.replace('-', 0) # 把‘-’的替换成0便于后面计算

df2 = df2.fillna(0) # 数据清洗,缺失值用0补足

df2 = df2.reset_index(drop=True) # 重设行索引

column_name = [i for i in df1] # 获取所有的列名

if df2.empty: # 校验文件是否为空

return '文件内容为空,请检查是否有数据'

try:

start_date_time = df2[column_name[0]].dt.strftime('%Y-%m-%d')

end_date_time = df2[column_name[1]].dt.strftime('%Y-%m-%d')

advertising_mix_name = df2[column_name[2]]

currency = df2[column_name[3]]

name_of_advertising_campaign = df2[column_name[4]]

name_of_advertising_group = df2[column_name[5]]

launch = df2[column_name[6]]

matching_type = df2[column_name[7]].replace('-', "Automatic")

customer_search_terms = df2[column_name[8]]

display_volume = df2[column_name[9]]

hits = df2[column_name[10]]

ctr = round(df2[column_name[11]] * 100, 2)

cpc = round(df2[column_name[12]], 2)

spend = df2[column_name[13]]

total_sales = df2[column_name[14]]

acos = round(df2[column_name[15]] * 100, 2)

roas = round(df2[column_name[16]], 2)

total_orders_in_seven_days = df2[column_name[17]]

total_sales2 = df2[column_name[18]]

seven_days_conversion_rate = round(df2[column_name[19]] * 100, 2)

advertising_sku_sales = df2[column_name[20]]

other_sku_sales = df2[column_name[21]]

advertising_sku_sales2 = df2[column_name[22]]

other_sku_sales2 = df2[column_name[23]]

except Exception as e:

print(e)

return '文件上传失败...联系客服解决'

file_path = './ceshi.xlsx'

f = get_excel(file_path)

print(f)

其他操作/某行/某列数据

获取某一行或者某几行的数据 整行数据

# 获取一行数据

l1 = df2[0:1]

# 获取多行数据 例如获取全部

l2 = df2[0:len(df2)]

操作示例

"""

################ Rudy ################

############# 2021-01-22 #############

"""

import pandas as pd

def get_excel(path_load):

df1 = pd.read_excel(path_load)

df2 = df1.dropna(how='all') # 数据清洗,为完成需求删去不必要的行

df2 = df2.replace('-', 0) # 把‘-’的替换成0便于后面计算

df2 = df2.fillna(0) # 数据清洗,缺失值用0补足

df2 = df2.reset_index(drop=True) # 重设行索引

column_name = [i for i in df1] # 获取所有的列名

if df2.empty: # 校验文件是否为空

return '文件内容为空,请检查是否有数据'

# 获取一行数据

l1 = df2[0:1]

# 获取多行数据 例如获取全部

l2 = df2[0:len(df2)]

file_path = './ceshi.xlsx'

f = get_excel(file_path)

"""

print(l1)

Start Date ... 7 Day Other SKU Sales ($)

0 2021-01-06 ... 0

[1 rows x 24 columns]

print(l2)

Start Date ... 7 Day Other SKU Sales ($)

0 2021-01-06 ... 0

1 2021-01-06 ... 0

2 2021-01-05 ... 0

3 2021-01-05 ... 0

..................剩下的忽略..................

[31 rows x 24 columns]

"""

使用loc获取数据,loc可接受两个参数/一个为行下标/一个为列下标

# 获取某一行数据 如果已知行 可以选择这种方式

l1 = df2.loc[0]

# 获取第几行 与 第几行的数据 注意是 与 代表获取的第5与第10行数据

l2 = df2.loc[[5, 10]]

# 通过切片方式获取多行数据

l3 = df2.loc[0:10]

操作示例:

"""

################ Rudy ################

############# 2021-01-22 #############

"""

import pandas as pd

def get_excel(path_load):

df1 = pd.read_excel(path_load)

df2 = df1.dropna(how='all') # 数据清洗,为完成需求删去不必要的行

df2 = df2.replace('-', 0) # 把‘-’的替换成0便于后面计算

df2 = df2.fillna(0) # 数据清洗,缺失值用0补足

df2 = df2.reset_index(drop=True) # 重设行索引

column_name = [i for i in df1] # 获取所有的列名

if df2.empty: # 校验文件是否为空

return '文件内容为空,请检查是否有数据'

# 获取某一行数据 如果已知行 可以选择这种方式

l1 = df2.loc[0]

# 获取第几行 与 第几行的数据 注意是 与 代表获取的第5与第10行数据

l2 = df2.loc[[5, 10]]

# 通过切片方式获取多行数据

l3 = df2.loc[0:10]

file_path = './ceshi.xlsx'

f = get_excel(file_path)

"""

print(l1)

Start Date 2021-01-06 00:00:00

End Date 2021-01-06 00:00:00

Portfolio name Not grouped

....忽略中间部分....

7 Day Advertised SKU Units (#) 0

7 Day Other SKU Units (#) 0

7 Day Advertised SKU Sales ($) 0

7 Day Other SKU Sales ($) 0

Name: 0, dtype: object

print(l2)

Start Date ... 7 Day Other SKU Sales ($)

5 2021-01-06 ... 0

10 2021-01-09 ... 0

[2 rows x 24 columns]

print(l3)

...

"""

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值