美文网首页我爱编程
pandas 数据分析

pandas 数据分析

作者: j4fan | 来源:发表于2018-06-11 23:20 被阅读37次

    最近稍微研究了一下pandas如何做数据分析,本文主要记录下常用的用法:去重,分组计数,分组求和求平均,画直方图,画热力图.相关文档建议参考pandas的文档http://pandas.pydata.org/pandas-docs/stable/cookbook.html

    题外话

    首先说下用了pandas真的对java处理excel深恶痛绝...强类型转换经常需要我们进行复杂的变量类型判断,python这方面简单的多,比如时间,读成文本然后格式化,真的很方便

    import pandas as pd
    path = r'/app/web/pt'
    os.chdir(path)
    df = pd.read_excel(r'test.xls', na_values=['null'], dtype={'日期': str})
    df['日期'] = pd.to_datetime(df['日期'])
    df.to_excel(r'result.xls')
    

    读写excel就是这么容易,分分钟打算放弃java

    1.去重

    df.drop_duplicates("a2") //以a2列为基准去重
    df.drop_duplicates(["a2","a3"]) //
    df.drop_duplicates("a2",keep='first') //去重 保留第一个
    

    2.分组计数

    df = df.groupby(['row1', 'row2']).size() //分组计数
    df = df.groupby(['row1', 'row2']).mean() //分组求平均
    

    3.画直方图

    画直方图是画图里最简单的,把list放在plt的hist里面做参数即可

    path = r'/app/web/pt'
    os.chdir(path)
    df = pd.read_excel(r'test.xlsx', na_values=['nan'])
    new_seris = df.loc[(df['区域'] =='D'),'归类后']
    values = []
    values = new_seris.tolist()
    plt.xlabel("归类")
    plt.ylabel("频次")
    plt.hist(values)
    plt.title(u"A区问题分布直方图")
    plt.show()
    

    4.根据地址求经纬度

    照搬百度api,不过自己得申请个vk码,对并发量和次数有限制.不过可以多帐号多线程去做

    def check(address):
        time.sleep(2)
        try:
            r = requests.get(
                "http://api.map.baidu.com/place/v2/search?query=" + address + "&region=北京&output=json&ak=nLpN5iKztxIWsPqgwsyrruUG")
        except:
            return 0, 0
        s = json.loads(r.text)
        print(r.text)
        try:
            lat = s["results"][0]["location"]["lat"]
            lng = s["results"][0]["location"]["lng"]
            return lat, lng
        except:
            return 0, 0
    

    5 根据经纬度画热力图

    同样的百度热力图由api,只要修改内部的经纬代码,换上自己的帐号即可,这里截图看下效果


    2018-06-11 22-37-08 的屏幕截图.png

    结束语

    以上是最近的一点小研究的总结,当作一个记录而已.谢谢阅读
    个人博客 欢迎访问~

    相关文章

      网友评论

        本文标题:pandas 数据分析

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