概述
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
初步分析
例如我们看到这个product_group
这一栏,也就是产品组,要是我们想要知道总共有哪些产品组?每一组产品总共有多少?占到的比重又是多少,就可以调用其中freq()
方法,这个就和Pandas
当中的groupby
方法十分地类似,代码如下
sales.stb.freq(["product_group"])
output
那么从上面的结果中我们可以看到,总共有6个产品组以及各自的占比情况如何和累积的占比情况。当然上述的结果本质上是基于表格当中各个产品的行数是多少,而当我们想要看一下各个产品的销量情况时,就需要用到last_week_sales
字段了,代码如下
sales.stb.freq(["product_group"], value="last_week_sales")
output
然后我们要是还想进一步深挖数据集当中的信息,例如想要看一下每一组产品在每一家门店中的销量情况,就需要用到store
字段,代码如下
sales.stb.freq(["product_group", "store"], value="last_week_sales")
output
缺失值
我们来看一下表格当中的缺失值的分布,代码如下
sales.stb.missing()
output
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
我们筛选出了一二两组在每家门店当中的销量情况,而对于sidetable
而言还能够轻松的计算出每家门店销量的总和,代码如下
sales_filtered.groupby(["store", "product_group"]).agg(
total_sales = ("last_week_sales", "sum")
).stb.subtotal()
output
eval()函数
Pandas
提供了通过eval()
进行表达式计算的功能,我们依次可以写出简洁、易读的代码,例如有下面这么一个数据集
df = pd.DataFrame({"animal": ["dog", "cat"], "age": [20, 30]})
df
output
我们可以调用pd.eval()
方法来新建一列,代码如下
pd.eval("double_age = df.age * 2", target=df)
output
该函数仅对列进行操作,而不对特定行或者元素进行操作。我们再来看几个示例,代码如下
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
因此,我们只需要传入需要计算的表达式字符串即可得到想要的结果。
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
NO.1
往期推荐
Historical articles
常用SQL语句大全,数据分析师入门必备!
太神奇了,一行命令行将Notebook转换成PPT动态网页!
菜鸟程序员在Python编程时常犯的9个错误
用Python预测了一下世界杯决赛最后的赢家,发现准确率还挺高!!
分享、收藏、点赞、在看安排一下?
最后
以上就是勤恳镜子为你收集整理的介绍几个好用到爆的Python模块,建议收藏!!的全部内容,希望文章能够帮你解决介绍几个好用到爆的Python模块,建议收藏!!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复