Python数据分析基础第三课—结构数据分析库Pandas,暂时的终章!

极简编程,极简生活,简到极致,就是完美!

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!
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道-闇影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值