一、numpy,pandas基础知识
![46218fef159dab2a1e7b4df4676ed3b1.png](https://i-blog.csdnimg.cn/blog_migrate/ecc0bbf862517639487d8dff05befd04.png)
![cdb2f40b913c44918a8ac564ab74678f.png](https://i-blog.csdnimg.cn/blog_migrate/d7909435bf691b13f2af15eda9420d9b.jpeg)
![27c708cf16e6d9cac54b3bdcf78278b8.png](https://i-blog.csdnimg.cn/blog_migrate/7f89fdb4617cd160023317ed53cc80d5.png)
![01368a8d4285d1b68fbdafc086aeeb93.png](https://i-blog.csdnimg.cn/blog_migrate/b355a1bfd9d5796ee9067d1d507b00c2.png)
![17781222aded65c711b718a62808a7dc.png](https://i-blog.csdnimg.cn/blog_migrate/705704b4e4cce1e01e644a375dcf7934.png)
![3824ac7bc392d757b1a1a9125564809b.png](https://i-blog.csdnimg.cn/blog_migrate/e7f42e519f2d6682fd8fbdf01f66d7ba.png)
![40fc6804c66959aad3a8f070a99e96d7.png](https://i-blog.csdnimg.cn/blog_migrate/302bcddf018c3ff470975c7c119f7506.jpeg)
![43c25c0c4f966b490822b9f13da5d7ea.png](https://i-blog.csdnimg.cn/blog_migrate/209f61660281360ed046611df812ea9c.png)
![b34d9767975e624d505013881b06b96e.png](https://i-blog.csdnimg.cn/blog_migrate/f8cea27a95a2e29de9666cec9ef09e88.jpeg)
![cefe03c6944e136cd64d3fe27395414a.png](https://i-blog.csdnimg.cn/blog_migrate/3f862bf897b5f1aa6af911f8f8baf919.jpeg)
![387bf604bc0417a982bcf0dcb1ebc909.png](https://i-blog.csdnimg.cn/blog_migrate/6d0bee0988e02bc2dfc6853ae4d06c92.jpeg)
![75615e3d02d94549bc6de824ec50e15e.png](https://i-blog.csdnimg.cn/blog_migrate/1aa2a5639220c03f927e688cf33364f7.jpeg)
![816e0d0fb6a69fbad1576bdfe3832b3c.png](https://i-blog.csdnimg.cn/blog_migrate/0bdd176de1f67d0107bfd5a50931d09e.jpeg)
![44c14e24cf171dd0636c1eb3699faf17.png](https://i-blog.csdnimg.cn/blog_migrate/e1ddcfb92375668423ffa0303aa452ac.jpeg)
二、医院销售数据实战案例分析
数据分析步骤:
1、提出问题
2、理解数据
3、数据清洗
4、构建模型
5、数据可视化
1、提出问题
要从销售数据中获得1)月均消费次数 2)月均消费金额 3)客单价 4)消费趋势
1)月均消费次数=总消费次数/月份数
2)月均消费金额=总消费金额/月份数
3)客单价=总消费金额/消费人数
4)消费趋势,画图:折线图
2、理解数据
先导入数据
先导入数据。路径中最好不要有中文或者特殊符号,不然路径会提示错误找不到。最好将文件放到一个简单的英文路径下。使用pandas的read_excel函数读取excel文件;参数sheet_name:数据在Excel的哪个sheet里面,这里就写该sheet在Excel的名称;参数dtype=str 统一先按照字符串读入,之后再转换。
![88d3b9bde29324856ef5ccedce8e888f.png](https://i-blog.csdnimg.cn/blog_migrate/ba91fb618eefba36a365c664c5aa9136.jpeg)
![cec439c20b3ccb5fb21af26699e2636c.png](https://i-blog.csdnimg.cn/blog_migrate/0824362570bc1524de64e9ca7e0f7ba8.jpeg)
![499cae68bc18432b48f2474168c4d7ac.png](https://i-blog.csdnimg.cn/blog_migrate/3995a067e40d74a1b560090334840962.png)
3、数据清洗
数据清洗步骤:
1)选择子集
2)列名重命名
3)缺失数据处理
4)数据类型转换
5)数据排序
6)异常值处理
1)选择子集:(本案例不需要选择子集),使用切片查询
![776f58efec4c3012e6d0df5667d80c0b.png](https://i-blog.csdnimg.cn/blog_migrate/c0b623c6a4f08d0b1f3b5432801a61ee.jpeg)
2)列名重命名:使用rename。先构建一个字典,旧列名和新列名的对应关系。inplace=False,数据框本身不会变,而会创建一个改动后新的数据框,默认的inplace是False。inplace=True,数据框本身会改动。
![9446c02edff95a9994dd8eb3ca92dfe1.png](https://i-blog.csdnimg.cn/blog_migrate/99abdfe13e28253a74ffaec9cecfa5fb.jpeg)
3)缺失数据处理
python缺失值有3种:
1)Python内置的None值
2)在pandas中,将缺失值表示为NA,表示不可用not available。
3)对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。
后面出来数据,如果遇到错误:说float错误,那就是有缺失值,需要处理掉。
所以,缺失值有3种:None,NA,NaN
#删除列(销售时间,社保卡号)中为空的行——dropna。#how='any' 在给定的任何一列中有缺失值就删除。
![a9336bcfcd73e64c458fa27c26930bca.png](https://i-blog.csdnimg.cn/blog_migrate/1f4c5c4d66a655187f6c8a0d6e8b246b.png)
4)数据类型转换
字符串转换为数值(浮点型),用.astype()
![95c092e936c6594813062d35f6096c77.png](https://i-blog.csdnimg.cn/blog_migrate/df19107cad8cade26defb2e2329b582b.png)
字符串转换为日期数据类型
![adb5a3baece6f53c7067a5bf9c6fdd37.png](https://i-blog.csdnimg.cn/blog_migrate/8e7c9f25e512d339284145bbeb87620d.jpeg)
将字符串转化为日期格式
![ab2d0fb511ac80df51c456d5e0ee09a4.png](https://i-blog.csdnimg.cn/blog_migrate/a126594fec3dc827da5871b1e58fb8d6.jpeg)
5)数据排序——sort values
![270109b3e94b420ea8fad3fe8f90f241.png](https://i-blog.csdnimg.cn/blog_migrate/4af6337dfebec4e9cc354dceaa630f5b.jpeg)
![f42e985831d54e9af9209bc928af1aa2.png](https://i-blog.csdnimg.cn/blog_migrate/7d61b2da84e223a1764b0a001e332e24.jpeg)
6.异常值处理
![f8dd3fe84a833e39e54842024036bce7.png](https://i-blog.csdnimg.cn/blog_migrate/a2e5611c1be5b47c4ea8bb9013fe35aa.jpeg)
4.构建模型
业务指标1:月均消费次数=总消费次数 / 月份数
![ba01d73d8cf954224c80c8da6e688531.png](https://i-blog.csdnimg.cn/blog_migrate/9ad6fbf9c4a69e2a5a758a8531f2b280.jpeg)
![45f6ec6f5fe9a2e68efbfec6e4e1fa42.png](https://i-blog.csdnimg.cn/blog_migrate/08c788ec0258457f25d6768b3306375c.jpeg)
业务指标2:月均消费金额=总消费金额/月份数
![8bceee3545848754a40615560a31cdc9.png](https://i-blog.csdnimg.cn/blog_migrate/fb00ba0c17bb4506bc670987251f7f29.png)
业务指标3:客单价=总消费金额/消费人数
![5cde3cb78e1f3d950fbfcf96166b63a1.png](https://i-blog.csdnimg.cn/blog_migrate/02e51b0df4b06b88df43825c16631c82.png)
5.结论
月均消费次数=890
月均消费金额=60802.022
客单价= 56.91
整理常用公式
理解数据常用公式:.head() .tail() .shape .dtypes .columns .info() .describe() .values_counts() --查看Series对象的唯一值和计数值
清洗数据常用公式:
(1)删除列、行:先创建一个list,把不要的列放进去,再调用.drop()方法,参数axis为1时代表列,为0时代表行,参数inplace=True表示不创建新的对象,直接对原始对象进行修改。
![03de48170a69bd39215c267f45c41f56.png](https://i-blog.csdnimg.cn/blog_migrate/53a2840f133fdc20f7225c8a96b0946e.png)
(2)重新命名列:用.rename()方法进行修改,先创建一个字典,把要修改的列名定义好,然后调用rename()方法。
![e5f01f29f23d2e40405242df82dfddc3.png](https://i-blog.csdnimg.cn/blog_migrate/9dd9f7ae4f7ea81367a7434191d4ecb7.png)
(3)重新设置索引:数据默认的索引是从0开始的有序整数,但如果想把某一列设置为新的索引,可以用.setindex()方法实现。如果在排序的时候索引序号乱了,可以使用.reset_index重新排序。
![d5d510fe4e78f4f4583f0a8956c3207c.png](https://i-blog.csdnimg.cn/blog_migrate/6ed039edc6e600c91b661534508a05bb.jpeg)
(4)用字符串操作规范列:str.lower() ——小写 str.upper() ——大写 str.capitalize()——将首字母转化为大写 str.replace()——代替 str.strip()——去除字符串中的头尾空格、以及n t str.split()——分割 str.get()——选取列表中某个位置的值 str.contains()——判断是否存在某个字符,返回的是布尔值 str.find()——检测字符串中是否包含子字符串str
(5)删除重复数据:drop_duplicates()
(6)填充缺失值:fillna
(7)删除空值:drop_na
(8)排序:sort_values
(9)转换数据类型:astype()