美文网首页我爱编程@产品
产品经理数据分析不求人(2) - Pandas处理Excel

产品经理数据分析不求人(2) - Pandas处理Excel

作者: Jeru_d39e | 来源:发表于2018-04-23 15:31 被阅读0次

    产品经理数据分析不求人(1) - 第一个Python程序

    产品经理处理数据一般有两个阶段,能写SQL的有自助查询工具的就自己写SQL, 否则找BI拉数据。不管是自己取数还是别人取数一般都会导出一个Excel, 第二个阶段就是处理Excel了,通过各种公式和制图得到自己想要的分析结果,但是有了Python, 我们可以让第二个环节更加高效和强大,而且可以不断复用你的成果。可能你会说自己Excel应用的炉火纯青,能熟练应用数据透视和宏,还记得一百多个公式,那无非也就等于熟练掌握了冷兵器时代的蒙古弓。相对于Excel, 程式化处理具备的优势是自动化和线上化。相对于零散的公式和宏,集中的自然语言风格的代码易于解读易于理解易于复用和改造,具备良好的迁移性。Excel是靠人做线下处理,如果能切换到代码实现,就能无缝和线上系统整合,贯穿全流程批量处理更复杂的问题。

    Python有一个强大的数据处理库叫Pandas用来分析结构化数据,在金融数据分析领域广泛应用。它已经集成到Anaconda中了,所以你都不用安装。Pandas既可以处理Excel也可以直接操作SQL, 这一课我们只用它来做一些基本的Excel操作。Pandas有两种数据结构,Series和DataFrame ,简单理解前者是一维数据,后者是二维数据,下面的实例中会用到DataFrame映射表结构。

    首先我准备一个简单的Excel样本文件工资表。只模拟六行记录,每行几个简单字段,姓名,性别,年龄,收入,扣税。

    把这个文件保存到文件夹,然后我们就可以开始来进行一系列简单的操作练习了。
    为了节省你的时间这个文件我已经上传到github提供下载: 点击获取

    Sample Excel

    导入Pandas
    因为要用到Pandas这个库,所以我们先导入它,并给一个简单的别名pd

    import pandas as pd

    读取并打印记录

    注意表格里我特意加了一条重复记录在第三行,当获取和打印记录的时候Pandas已经实现去重处理了,所以df.head()打印出来只有五条记录。

    #读取excel数据到一个data frame中
    df = pd.read_excel("d:/dev/salary.xlsx")

    #获取头部5条记录
    print(df.head())
    print("----------")
    #获取头部两条记录
    print(df.head(2))
    print("----------")
    #获取尾部三条记录
    print(df.tail(3))

    console

    查看记录条数

    print("number of rows: ", len(df))

    console

    基本统计

    针对收入这一列求和,求平均数,取最小最大值,求方差和偏差也很简单,用std()和var()函数即可

    print("income sum ", df["income"].sum())
    print("income average ", df["income"].mean())
    print("income minmal ", df["income"].min())
    print("income max ", df["income"].max())

    console

    增加列

    假入想要看看每个人的税后收入就要用income减去tax, 最好能加多一列,Pandas也能简单实现,添加完后可以重新打印全部记录看看

    df['after tax'] = df['income'] - df['tax']
    print(df.head())

    console

    删除列

    df.drop(['after tax'], axis = 1, inplace = True)

    分组求和

    假如我们想按照性别分组统计男性和女性的收入之和

    gender_grouped = df.groupby("gender")
    income_sum_groupby_gender = gender_grouped[['income']].sum(axis=1)
    print(income_sum_groupby_gender)

    console

    切片

    假如我想仅查看男性人员记录,且只要名字和税收两个字段(横切一刀,竖切一刀)
    loc函数就相当于SQL中的where

    slice = df.loc[df['gender']== 'male',['name', 'tax']]
    print(slice)

    console

    保存文件

    上面代码略加修改,分别对男性和女性人员进行切片,再创建两个worksheet写入Excel保存

    male_slice = df.loc[df['gender']== 'male',['name', 'tax']]
    female_slice = df.loc[df['gender']== 'female',['name', 'tax']]

    writer = pd.ExcelWriter("d:/dev/tax.xlsx")
    male_slice.to_excel(writer, 'male')
    female_slice.to_excel(writer, 'female')
    writer.save()

    基本操作就先写这么多,还有连接,合并, 转置,画图等高级操作,可以参考下面的两张cheatsheet自己尝试练习。
    下一次我们将结合一个实际的数据分析案例使用这里学到的知识来进行操作演示。

    相关文章

      网友评论

        本文标题:产品经理数据分析不求人(2) - Pandas处理Excel

        本文链接:https://www.haomeiwen.com/subject/sahllftx.html