看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
某剧组在拍摄一部反映都市白领生活的电视剧,主人公 Amy 在一家公司做销售工作。这天,她在公司整理客户数据,加班到很晚,有一个镜头需要拍摄她使用电脑整理客户资料的画面。道具组负责这个客户资料表格的制作,由于影视作品是面向公众的,不能展示真实的用户资料,现在需要道具组产出一个假的数据表格。
pandas 可以构造一个 DataFrame,然后输出为 Excel,其中假数据的生成,我们使用一个名为 faker(可以使用 pip install faker 安装)的第三方库完成。
import pandas as pd
import faker # 安装:pip install faker
f = faker.Faker('zh-cn')
df = pd.DataFrame({
'客户姓名': [f.name() for i in range(10)],
'年龄': [f.random_int(25, 40) for i in range(10)],
'最后去电时间': [f.date_between(start_date='-1y', end_date='today')
.strftime('%Y年%m月%d日') for i in range(10)],
'意向': [f.random_element(('有', '无')) for i in range(10)],
'地址': [f.street_address() for i in range(10)],
})
df
'''
客户姓名 年龄 最后去电时间 意向 地址
0 陈明 26 2021年01月09日 无 杨街I座
1 彭海燕 25 2020年12月03日 有 汕尾路U座
2 王楠 39 2020年04月20日 有 兰州路z座
3 曲丹 31 2021年01月07日 无 宁德路Q座
4 杜丽 37 2020年09月04日 无 张路b座
5 王建军 32 2021年01月03日 无 徐街N座
6 曾丹 40 2020年06月18日 无 通辽街G座
7 崔东 27 2020年03月06日 有 武汉街T座
8 章畅 32 2020年08月29日 无 大冶路y座
9 李淑英 36 2020年05月02日 无 合肥路A座
'''
pd.DataFrame() 在生成 DataFrame 时,可以通过字典的形式传入数据的功能,键为列名,值是一个序列,作为此列的值。
也可以如下使用 assign 一一列地添加:
(
pd.DataFrame()
.assign(客户姓名=[f.name() for i in range(10)])
.assign(年龄=[f.random_int(25, 40) for i in range(10)])
.assign(最后去电时间=[f.date_between(start_date='-1y', end_date='today') for
i in range(10)])
.assign(意向=[f.random_element(('有', '无')) for i in range(10)])
.assign(地址=[f.street_address() for i in range(10)])
)
最后导出 Excel 文件:
# 生成Excel文件
df.to_excel('客户资料表.xlsx', index=None)
可在脚本同目录下找到生成的文件,导出 Excel 文件后简单进行格式样式调整,就完成了此道具的制作。
(完)
注:此案例收录在《深入浅出Pandas:利用Python进行数据处理与分析》17.2.1 小节。
更新时间:2024-08-18 16:12:13 标签:pandas excel