极简编程,极简生活,简到极致,就是完美!
Python数据分析基础第三课—结构数据分析库Pandas,把常见的数据转换成二维表格来处理与分析…… Lets go !
目录
导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
1.pandas 创建数据对象:Series(一维)【了解】
list1 = [1, 2, 3, 4, 5]
dict1 = {"name": "zhangsan", "age": 18}
s1 = pd.Series(list1)
s2 = pd.Series(dict1)
print(s1)
print(s2)
print(s1.isnull())
0 1
1 2
2 3
3 4
4 5
dtype: int64
name zhangsan
age 18
dtype: object
0 False
1 False
2 False
3 False
4 False
dtype: bool
2.pandas 创建二维数据对象:DataFrame(类似二维表格形式)【重要】
users_dict = {"name": ["张三", "李四", "王五"],"age":[22,33,18]}
df1 = pd.DataFrame(users_dict)
print(df1)
print(df1.dtypes)
name age
0 张三 22
1 李四 33
2 王五 18
name object
age int64
dtype: object
3.pandas 快速查看数据概况
print(df1.head())
print(df1.columns)
print(df1.index)
print(df1.values)
print(df1.describe())
print(df1.mean(1))
print(df1['name'])
name age
0 张三 22
1 李四 33
2 王五 18
Index(['name', 'age'], dtype='object')
RangeIndex(start=0, stop=3, step=1)
[['张三' 22]
['李四' 33]
['王五' 18]]
age
count 3.000000
mean 24.333333
std 7.767453
min 18.000000
25% 20.000000
50% 22.000000
75% 27.500000
max 33.000000
0 22.0
1 33.0
2 18.0
dtype: float64
0 张三
1 李四
2 王五
Name: name, dtype: object
4.pandas DF的常用操作函数
# 我先搞一个数据集过来
filePath = './医院销售数据.xlsx'
sourceDF = pd.read_excel(filePath, sheet_name='Sheet1')
print(sourceDF.head())
print(sourceDF.count())
print(sourceDF.describe())
# 缺省值处理:dropna fillna isnull
print(sourceDF.dropna().count())
print(sourceDF.fillna("0").count())
print(sourceDF.isnull())
# 选取指定列
DF41 = sourceDF['商品名称']
print(DF41.head())
# 去除重复值
print(sourceDF.truncate().count())
购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 1.616528e+06 236701.0 强力VC银翘片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清热解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒灵 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
购药时间 6576
社保卡号 6576
商品编码 6577
商品名称 6577
销售数量 6577
应收金额 6577
实收金额 6577
dtype: int64
社保卡号 商品编码 销售数量 应收金额 实收金额
count 6.576000e+03 6.577000e+03 6577.000000 6577.000000 6577.000000
mean 6.091254e+09 1.015869e+06 2.386194 50.473803 46.317510
std 4.889284e+09 5.131153e+05 2.375202 87.595925 80.976702
min 1.616528e+06 2.367010e+05 -10.000000 -374.000000 -374.000000
25% 1.014234e+08 8.614560e+05 1.000000 14.000000 12.320000
50% 1.001650e+10 8.615070e+05 2.000000 28.000000 26.600000
75% 1.004882e+10 8.690690e+05 2.000000 59.600000 53.000000
max 1.283612e+10 2.367012e+06 50.000000 2950.000000 2650.000000
购药时间 6575
社保卡号 6575
商品编码 6575
商品名称 6575
销售数量 6575
应收金额 6575
实收金额 6575
dtype: int64
购药时间 6578
社保卡号 6578
商品编码 6578
商品名称 6578
销售数量 6578
应收金额 6578
实收金额 6578
dtype: int64
购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 False False False False False False False
1 False False False False False False False
2 False False False False False False False
3 False False False False False False False
4 False False False False False False False
... ... ... ... ... ... ... ...
6573 False False False False False False False
6574 True True True True True True True
6575 False False False False False False False
6576 False False False False False False False
6577 False False False False False False False
[6578 rows x 7 columns]
0 强力VC银翘片
1 清热解毒口服液
2 感康
3 三九感冒灵
4 三九感冒灵
Name: 商品名称, dtype: object
购药时间 6576
社保卡号 6576
商品编码 6577
商品名称 6577
销售数量 6577
应收金额 6577
实收金额 6577
dtype: int64
5.pandas DF数据常见操作
# 1.日期格式格式化: 2018-01-01 星期五-> 2018-01-01
print(sourceDF.head())
print(sourceDF.dtypes)
dateDF = sourceDF['购药时间'].map(lambda s: str(s).split(" ")[0])
print(dateDF)
# 2.数据转换和替换:apply+applymap dataframe, map针对series,上面
repDF = sourceDF.replace('NaN', '')
print(repDF.head())
# 3.数据过滤
highPriceDF = sourceDF[sourceDF['应收金额'] > 100]
print(highPriceDF.head())
# 4.分组聚合
print(sourceDF.groupby('商品编码').count())
购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 1.616528e+06 236701.0 强力VC银翘片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清热解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒灵 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
购药时间 object
社保卡号 float64
商品编码 float64
商品名称 object
销售数量 float64
应收金额 float64
实收金额 float64
dtype: object
0 2018-01-01
1 2018-01-02
2 2018-01-06
3 2018-01-11
4 2018-01-15
...
6573 2018-04-27
6574 nan
6575 2018-04-27
6576 2018-04-27
6577 2018-04-28
Name: 购药时间, Length: 6578, dtype: object
购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 1.616528e+06 236701.0 强力VC银翘片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清热解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒灵 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
7 2018-02-17 星期三 1.117733e+07 236701.0 三九感冒灵 5.0 149.0 131.12
9 2018-02-24 星期三 1.338953e+07 236701.0 三九感冒灵 4.0 119.2 104.89
13 2018-03-07 星期一 1.007740e+10 236701.0 清热解毒口服液 5.0 140.0 112.00
14 2018-03-09 星期三 1.007984e+10 236701.0 清热解毒口服液 6.0 168.0 140.00
购药时间 社保卡号 商品名称 销售数量 应收金额 实收金额
商品编码
236701.0 72 72 72 72 72 72
236702.0 9 9 9 9 9 9
236703.0 15 15 15 15 15 15
236704.0 33 33 33 33 33 33
236705.0 19 19 19 19 19 19
... ... ... ... ... ... ...
878157.0 1 1 1 1 1 1
878230.0 46 46 46 46 46 46
2367010.0 124 124 124 124 124 124
2367011.0 621 621 622 622 622 622
2367012.0 37 37 37 37 37 37
[85 rows x 6 columns]
Pandas的简单使用就到这里了,更多实用的技巧等待你的发掘!下期见,Byebye!