作者: 锋小刀 

当你要重复做一件事时,你就要想到python,因为这样会为你省下很多时间。

我们经常会在工作中遇见,类似下图中的表格(原始表格共计5136条数据),上级要求你将品名列的商品筛选出来,并按照“品名+.xlsx”的格式单独保存为一个exce工作簿,或者以品名为名保存为多个工作表,这样数据少了还好说,如果数据量大了,那还不得累得半死!

怎么在python里选择前五行 python读取前五行_python


业务需求:

  • 品名列的商品取出来,相同的存储在同一个工作表或者工作簿中。
代码实现

导入模块和文件:

import pandas as pd
df = pd.read_csv('价格.csv')

本文关键步骤是通过两个方法实现的,两个方法会分别实现如何取值保存为工作表以及工作簿;而关键步骤代码量最多不会超过三行,最少的只有两行两个方法其实差不多,差别只在于两个函数。

第一种方法是利用unique()函数。unique()函数是以数组形式返回列的所有唯一值,也就是相同的两个值只返回一个。

保存为工作表:

with pd.ExcelWriter('价格总表.xlsx') as writer:
    for i in df['品名'].unique():
    	# 用unique()取出的唯一值创建工作表,当品名与唯一值相同时,保存在相应的工作表
        df[df['品名'] == i].to_excel(excel_writer=writer, sheet_name=i, index=False)

同理,保存为工作簿:

for i in df['发布日期'].unique():
    df[df['发布日期'] == i].to_excel(f'./商品每日价格详表/{i}.xlsx', sheet_name=i, index=False)

第二种方法是利用groupby()函数。groupby()函数主要的作用是进行数据的分组以及分组后进行运算,本文只要用到groupby()函数的分组功能。

保存为工作表:

with pd.ExcelWriter('价格总表1.xlsx') as writer:
	 # i为品名唯一值,e为数据分组
     for i, e in df.groupby('品名'):
         e.to_excel(excel_writer=writer, sheet_name=i, index=False)

# 保存为工作簿:
for i, e in df.groupby('品名'):  
    e.to_excel(f'./商品每日价格详表/{i}.xlsx', sheet_name=i, index=False)

下图i为红色方框内的品名,e是以唯一的品名进行分好的组:

怎么在python里选择前五行 python读取前五行_公众号_02


运行程序后,保存的工作表:

怎么在python里选择前五行 python读取前五行_excel_03


保存好的工作表,一共416个工作簿:

怎么在python里选择前五行 python读取前五行_大数据_04


我们可以看到,只需要四、五行代码即可拆分416个工作表和工作簿,而关键代码也就两三行;如果是手动的进行拆分,那还不知道拆到何年何月,所以python是真的能为你省下很多时间!