数据分析成长之路

一个简单的例子来看 Python 和 Excel 的区别

2019-03-10  本文已影响0人  闪亮的日子hp

假设您是一家公司的分析师,并且非常精通Excel。您知道如何编写公式,制作数据透视表等方法来处理数据并进行精彩的展示。假如有一天,您要处理公司的销售额数据(数据非常大),看起来像这样。你该怎么办呢?


Screen Shot 2019-03-10 at 10.10.38.png

数据集大约为10000行,包括您公司一段时间内的所有销售数据。 营销部门有兴趣了解客户购买模式。 您需要探索以下问题:

通常,您将开始在Excel中对数据进行排序和管理。使用Excel的数据过滤器当然很简单,但是当您想要获得唯一的客户列表时,它们开始变得更具挑战性。由于客户在一段时间内进行多次购买,因此您必须对数据进行排序、pivot 并执行额外的过滤步骤,然后生成报告。但是下次遇到同样的需求呢?难道继续重复上述步骤吗?

来看看怎么用Python来解决这个问题(本篇文章代码适用于 Python 3.X)
首先来看一个简单的韦恩图,会让我们的思路更清晰明了,我们要找的其实是各种交集中的客户。


venn-pbpython2.png

由于文件是 csv 格式,所以我们要用到 csv 模块,然后用把买过鞋子、皮带、衬衫的客户添加到各自的集合(set)中。

import csv
with open("sample-sales.csv",'rt') as f:
    reader = csv.reader(f)
shoes = set()
belts = set()
shirts = set()
for row in reader:
    customer = (row[0],row[1])
    category = row[3]
if category == "Shoes":
            shoes.add(customer)
if category == "Belt":
            belts.add(customer)
if category == "Shirt":
            shirts.add(customer)
print("%s 客户购买了鞋子" % len(shoes))
print("%s 客户购买了皮带" % len(belts))
print("%s 客户购买了鞋子但没有购买皮带,客户信息如下:" % len(shoes - belts))
for customer in shoes - belts:
print(customer)
print("%s 客户既购买了鞋子,又购买了皮带和衬衫,客户信息如下:" % len(shoes & belts & shirts))
for customer in shoes & belts & shirts:
print(customer)
271 客户购买了鞋子
170 客户购买了皮带
240 客户购买了鞋子但没有购买皮带,客户信息如下:
('622744', 'Nader Group')
('723940', 'Nitzsche Group')
('651569', 'Ebert, Zemlak and Hills')
('050537', 'Hammes, Howell and Flatley')
('040901', 'Gislason, Skiles and Auer')
('185412', 'Goyette, Kessler and Goodwin')
('192686', 'Walter Inc')
('077116', 'Lang-Wunsch')
('725939', 'Ratke-Goldner')
....
9 客户既购买了鞋子,又购买了皮带和衬衫,客户信息如下:
('173693', 'Halvorson PLC')
('434955', 'Ledner-Kling')
('803666', 'Fritsch-Glover')
('004450', 'Beier-Bosco')
('727064', 'Bashirian, Beier and Watsica')
('343481', 'Mills Inc')
('527078', 'Kuvalis-Roberts')
('151300', "Upton, Runolfsson and O'Reilly")
('041711', 'Koepp-McLaughlin')

由于本篇文章只是为了说明 Python 和 Excel 的区别,所以只是打印出结果,但您可以修改它以将数据保存到csv文件中以导入到Excel或其他工具中。
所有代码如下:

import csv
shoes = set()
belts = set()
shirts = set()
with open("sample-sales.csv",'rt') as f:
    reader = csv.reader(f)
    for row in reader:
        customer = (row[0],row[1])
        category = row[3]
        if category == "Shoes":
            shoes.add(customer)
        if category == "Belt":
            belts.add(customer)
        if category == "Shirt":
            shirts.add(customer)
print("%s 客户购买了鞋子" % len(shoes))
print("%s 客户购买了皮带" % len(belts))
print("%s 客户购买了鞋子但没有购买皮带,客户信息如下:" % len(shoes - belts))
for customer in shoes - belts:
        print(customer)
print("%s 客户既购买了鞋子,又购买了皮带和衬衫,客户信息如下:" % len(shoes & belts & shirts))
for customer in shoes & belts & shirts:
        print(customer)

Python 脚本比 Excel 解决方案更好的原因有很多:

通过本篇文章希望这可以帮助您了解 Python 在实际工作环境中的潜力。
需要本文中用到的 csv 文件后台联系我!

上一篇 下一篇

猜你喜欢

热点阅读