【Python】介绍几个常用的Python模块,建议收藏!!

Python标准库有超过200个模块,程序员可以在他们的程序中导入和使用,虽然普通程序员对其中许多模块都有一些经验,但很可能有一些好用的模块他们仍然没有注意到。

今天小编就来给大家推荐几个特别好用的Python模块,其中有一部分是在Pandas当中的,方便大家使用了之后更加高效地来进行数据分析。

sidetable

sidetable是一种可用于数据分析和探索的工具模块,作为value_counts()crosstab两者组合来使用的,它能够实现的用途对于Pandas模块而言也都能实现,但是步骤更加简便。

首先我们先通过pip命令来安装该模块

pip install sidetable

紧接着我们读取本次教程需要用到的数据集,代码如下

import pandas as pd
import sidetable

sales = pd.read_csv(
  "sales_data_with_stores.csv",
   usecols = ["store", "product_group", "product_code", "cost",  
              "price", "last_week_sales"]
)
sales.head()

output

8f16a0760cfc6bad602ad23e6469cc9b.png

初步分析

例如我们看到这个product_group这一栏,也就是产品组,要是我们想要知道总共有哪些产品组?每一组产品总共有多少?占到的比重又是多少,就可以调用其中freq()方法,这个就和Pandas当中的groupby方法十分地类似,代码如下

sales.stb.freq(["product_group"])

output

a6a0a3b02d5ab58e9e3a830552af089a.png

那么从上面的结果中我们可以看到,总共有6个产品组以及各自的占比情况如何和累积的占比情况。当然上述的结果本质上是基于表格当中各个产品的行数是多少,而当我们想要看一下各个产品的销量情况时,就需要用到last_week_sales字段了,代码如下

sales.stb.freq(["product_group"], value="last_week_sales")

output

c8f56d62d37f891a4f917ec12200555b.png

然后我们要是还想进一步深挖数据集当中的信息,例如想要看一下每一组产品在每一家门店中的销量情况,就需要用到store字段,代码如下

sales.stb.freq(["product_group", "store"], value="last_week_sales")

output

11fcb873dc8a44077d77dcdf280950e7.png

缺失值

我们来看一下表格当中的缺失值的分布,代码如下

sales.stb.missing()

output

1175f373b488f16a0cff02847c44edba.png

subtotal计算

那么对于分组的结果而言,sidetable还可以计算得出每个分组的subtotal(小计),代码如下

sales_filtered = sales[sales["product_group"].isin(["PG1", "PG2"])]
sales_filtered.groupby(["store", "product_group"]).agg(
    total_sales = ("last_week_sales", "sum")
)

output

80561091f9890c0aea82efb7a36447ea.png

我们筛选出了一二两组在每家门店当中的销量情况,而对于sidetable而言还能够轻松的计算出每家门店销量的总和,代码如下

sales_filtered.groupby(["store", "product_group"]).agg(
    total_sales = ("last_week_sales", "sum")
).stb.subtotal()

output

7a05fbbbad9a7208bdcbb0354635272e.png

eval()函数

Pandas提供了通过eval()进行表达式计算的功能,我们依次可以写出简洁、易读的代码,例如有下面这么一个数据集

df = pd.DataFrame({"animal": ["dog", "cat"], "age": [20, 30]})
df

output

34e6e61815bd0325ad835cf8b8354ddb.png

我们可以调用pd.eval()方法来新建一列,代码如下

pd.eval("double_age = df.age * 2", target=df)

output

aaf75781be1942c40f1b9eb9032b0e9f.png

该函数仅对列进行操作,而不对特定行或者元素进行操作。我们再来看几个示例,代码如下

df = pd.DataFrame(dict(a=range(5), b=range(5, 10)))
df.eval("c = a + b", inplace=True)
df.eval("d = a + b + c", inplace=True)
df.eval("a = 5", inplace=True)
df

output

00aac1437ed6a2bbf9ed4f36f7e93738.png

因此,我们只需要传入需要计算的表达式字符串即可得到想要的结果。

exec()函数

Python内置的exec函数,用来执行一段Python代码,这段代码以字符串的形式传给exec函数执行,例如

exec('''
... for i in range(10):
...     print(i)
... ''')

output

0
1
2
3
4
5
6
7
8
9

而该函数的第二个参数具体是用来控制exec函数内执行代码可以访问的全局变量资源,如下代码所示

exec('''
print(a)
print(b)
print(d)
c = 3
print(c)''', {'a':111,'b':222,'d':444})

output

111
222
444
3

exec()函数除了能执行复杂的代码片段,还可以执行py文件中的Python代码,例如有test.txt文件,内容如下

# !usr/bin/env python
# -*- coding:utf-8 _*-

# test.txt

def main():
    x = 30
    y = 40
    print(x*y)
    print("www.baidu.com")

if __name__ == "__main__":
    main()

然后使用内置函数exec()执行这个txt文件的Python代码:

with open('test.txt','r') as f:
    exec(f.read())

output

1200
www.baidu.com
 
 

6755bd95c697dfcf85fff8d062435f82.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值