大厂数据分析师进阶之路,一个合格的数据分析师如何「造数」?

不会"造数"的数据分析师,不是一个好数据分析师,这里所说的"造数",并不是让我们数据分析师去胡编乱造数据,而是在日常数据分析过程中我们需要模拟生成一些数据用于测试,也就是测试数据。

本文所使用的Faker库就是一个很好的模拟生成数据的库,在满足数据安全的情况下,使用Faker库最大限度的满足我们数据分析的测试需求,可以模拟生成文本、数字、日期等字段,下面一起来学习。

示例工具:anconda3.7

本文讲解内容:Faker模拟数据并导出Excel

适用范围:数据测试和脱敏数据生成

常规数据模拟

常规数据模拟,比如我们生成一组范围在100到1000的31个数字,就可以使用一行代码np.random.randint(100,1000,31),如下就是我们使用随机数字生成的sale随日期变化的折线图。

import pandas as pd
import numpy as np
import datetime

df=pd.DataFrame(data=np.random.randint(100,1000,31),
                							index=pd.date_range(datetime.datetime(2022,12,1),periods=31),
                							columns=['sale']).plot(figsize=(9,6))

Faker模拟数据

使用Faker模拟数据需要提前下载Faker库,在命令行使用pip install Faker命令即可下载,当出现Successfully installed的字样时表明库已经安装完成。

!pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple

导入Faker库可以用来模拟生成数据,其中,locale="zh_CN"用来显示中文,如下生成了一组包含姓名、手机号、身份证号、出生年月日、邮箱、地址、公司、职位这几个字段的数据。

#多行显示运行结果
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

from faker import Faker
faker=Faker(locale="zh_CN")#模拟生成数据

faker.name()
faker.phone_number()
faker.ssn()
faker.ssn()[6:14]
faker.email()
faker.address()
faker.company()
faker.job()

除了上面的生成字段,Faker库还可以生成如下几类常用的数据,地址类、人物类、公司类、信用卡类、时间日期类、文件类、互联网类、工作类、乱数假文类、电话号码类、身份证号类。

#address 地址
faker.country()  # 国家
faker.city()  # 城市
faker.city_suffix()  # 城市的后缀,中文是:市或县
faker.address()  # 地址
faker.street_address()  # 街道
faker.street_name()  # 街道名
faker.postcode()  # 邮编
faker.latitude()  # 维度
faker.longitude()  # 经度

#person 人物
faker.name() # 姓名
faker.last_name() # 姓
faker.first_name() # 名
faker.name_male() # 男性姓名
faker.last_name_male() # 男性姓
faker.first_name_male() # 男性名
faker.name_female() # 女性姓名

#company 公司
faker.company() # 公司名
faker.company_suffix() # 公司名后缀

#credit_card 银行信用卡
faker.credit_card_number(card_type=None) # 卡号

#date_time 时间日期
faker.date_time(tzinfo=None) # 随机日期时间
faker.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期
faker.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期
faker.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)  # 本年代内的一个日期
faker.date_time_this_century(before_now=True, after_now=False, tzinfo=None)  # 本世纪一个日期
faker.date_time_between(start_date="-30y", end_date="now", tzinfo=None)  # 两个时间间的一个随机时间
faker.time(pattern="%H:%M:%S") # 时间(可自定义格式)
faker.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式)

#file 文件
faker.file_name(category="image", extension="png") # 文件名(指定文件类型和后缀名)
faker.file_name() # 随机生成各类型文件
faker.file_extension(category=None) # 文件后缀

#internet 互联网
faker.safe_email() # 安全邮箱
faker.free_email() # 免费邮箱
faker.company_email()  # 公司邮箱
faker.email() # 邮箱

#job 工作
faker.job()#工作职位

#lorem 乱数假文
faker.text(max_nb_chars=200) # 随机生成一篇文章
faker.word() # 随机单词
faker.words(nb=10)  # 随机生成几个字
faker.sentence(nb_words=6, variable_nb_words=True)  # 随机生成一个句子
faker.sentences(nb=3) # 随机生成几个句子
faker.paragraph(nb_sentences=3, variable_nb_sentences=True)  # 随机生成一段文字(字符串)
faker.paragraphs(nb=3)  # 随机生成成几段文字(列表)

#phone_number 电话号码
faker.phone_number() # 手机号码
faker.phonenumber_prefix() # 运营商号段,手机号码前三位

#ssn 身份证
faker.ssn() # 随机生成身份证号(18位)

模拟数据并导出Excel

使用Faker库模拟一组数据,并导出到Excel中,包含姓名、手机号、身份证号、出生日期、邮箱、详细地址等字段,先生成一个带有表头的空sheet表,使用Faker库生成对应字段,并用append命令逐一添加至sheet表中,最后进行保存导出。

from faker import Faker
from openpyxl import Workbook

wb=Workbook()#生成workbook 和工作表
sheet=wb.active

title_list=["姓名","手机号","身份证号","出生日期","邮箱","详细地址","公司名称","从事行业"]#设置excel的表头
sheet.append(title_list)

faker=Faker(locale="zh_CN")#模拟生成数据

for i in range(100):
      sheet.append([faker.name(),#生成姓名
                     faker.phone_number(),#生成手机号
                     faker.ssn(), #生成身份证号
                     faker.ssn()[6:14],#出生日期
                     faker.email(), #生成邮箱
                     faker.address(), #生成详细地址
                     faker.company(), #生成所在公司名称
                     faker.job(), #生成从事行业
                    ])
                    
wb.save(r'D:系统桌面(勿删)Desktop模拟数据.xlsx')

以上使用Faker库生成一组模拟数据,并且导出到Excel本地,使用模拟数据这种数据创建方式极大方便了数据的使用,更多关于数据方面的内容可以关注我,一起学习。

初入数据分析,对于技能和知识点的应用明显不足,那么就需要我们系统的学习这部分知识点,本次推荐的数据分析训练营,带你系统的学习数据分析知识,感兴趣的话可以点击「链接」进入了解,并进行学习~

展开阅读全文

页面更新:2024-03-10

标签:进阶   数据   后缀   字段   详细地址   手机号   身份证号   姓名   邮箱   日期   时间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top