Python Pandas操作Excel

前情提要

本章使用的 Python3.6 Pandas==0.25.3
项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日文...等多国语言的校验
操作麻烦 后改进的操作方式

测试文件点击下载

Pandas中文文档

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)
...
"""

版权声明:本文为juliy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/juliy/p/14331038.html