精华内容
下载资源
问答
  • 我认为您需要groupby与mean by mean一起申请:titanic['age'] = titanic.groupby(['survived','embarked'])['age'].apply(lambda x: x.fillna(x.mean()))import seaborn as snstitanic = sns.load_dataset('titanic'...

    我认为您需要groupby与mean by mean一起申请:

    titanic['age'] = titanic.groupby(['survived','embarked'])['age']

    .apply(lambda x: x.fillna(x.mean()))

    import seaborn as sns

    titanic = sns.load_dataset('titanic')

    #check NaN rows in age

    print (titanic[titanic['age'].isnull()].head(10))

    survived pclass sex age sibsp parch fare embarked class \n5 0 3 male NaN 0 0 8.4583 Q Third

    17 1 2 male NaN 0 0 13.0000 S Second

    19 1 3 female NaN 0 0 7.2250 C Third

    26 0 3 male NaN 0 0 7.2250 C Third

    28 1 3 female NaN 0 0 7.8792 Q Third

    29 0 3 male NaN 0 0 7.8958 S Third

    31 1 1 female NaN 1 0 146.5208 C First

    32 1 3 female NaN 0 0 7.7500 Q Third

    36 1 3 male NaN 0 0 7.2292 C Third

    42 0 3 male NaN 0 0 7.8958 C Third

    who adult_male deck embark_town alive alone

    5 man True NaN Queenstown no True

    17 man True NaN Southampton yes True

    19 woman False NaN Cherbourg yes True

    26 man True NaN Cherbourg no True

    28 woman False NaN Queenstown yes True

    29 man True NaN Southampton no True

    31 woman False B Cherbourg yes False

    32 woman False NaN Queenstown yes True

    36 man True NaN Cherbourg yes True

    42 man True NaN Cherbourg no True

    idx = titanic[titanic['age'].isnull()].index

    titanic['age'] = titanic.groupby(['survived','embarked'])['age']

    .apply(lambda x: x.fillna(x.mean()))

    #check if values was replaced

    print (titanic.loc[idx].head(10))

    survived pclass sex age sibsp parch fare embarked \n5 0 3 male 30.325000 0 0 8.4583 Q

    17 1 2 male 28.113184 0 0 13.0000 S

    19 1 3 female 28.973671 0 0 7.2250 C

    26 0 3 male 33.666667 0 0 7.2250 C

    28 1 3 female 22.500000 0 0 7.8792 Q

    29 0 3 male 30.203966 0 0 7.8958 S

    31 1 1 female 28.973671 1 0 146.5208 C

    32 1 3 female 22.500000 0 0 7.7500 Q

    36 1 3 male 28.973671 0 0 7.2292 C

    42 0 3 male 33.666667 0 0 7.8958 C

    class who adult_male deck embark_town alive alone

    5 Third man True NaN Queenstown no True

    17 Second man True NaN Southampton yes True

    19 Third woman False NaN Cherbourg yes True

    26 Third man True NaN Cherbourg no True

    28 Third woman False NaN Queenstown yes True

    29 Third man True NaN Southampton no True

    31 First woman False B Cherbourg yes False

    32 Third woman False NaN Queenstown yes True

    36 Third man True NaN Cherbourg yes True

    42 Third man True NaN Cherbourg no True

    #check mean values

    print (titanic.groupby(['survived','embarked'])['age'].mean())

    survived embarked

    0 C 33.666667

    Q 30.325000

    S 30.203966

    1 C 28.973671

    Q 22.500000

    S 28.113184

    Name: age, dtype: float64

    展开全文
  • 在日常的数据分析过程中,我们可能会遇到一些关于字符串类型的地址信息,由于录入的地址信息良莠不齐,我们在进行地址处理时就会变得麻烦。为了能够方便的进行地址的处理,这里提供一个地址的处理方法。 2.根据字符...

    1.前言

    在日常的数据分析过程中,我们可能会遇到一些关于字符串类型的地址信息,由于录入的地址信息良莠不齐,我们在进行地址处理时就会变得麻烦。为了能够方便的进行地址的处理,这里提供一个地址的处理方法。

    2.根据字符串形式的地址信息获取经纬

    2.1 选择合适的地图api接口

    目前支持地图api接口的网站有很多,在这里以百度地图为例:
    步骤1.先去百度地图开发平台,注册成为开发者;
    步骤2.在应用管理下创建自己的应用;
    创建应用
    步骤3.输入必要的信息,然后创建完成;
    信息完成

    2.2 使用python调用api接口

    先将官方文档的链接放在这里:https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
    调用实例代码如下:

    import json
    from urllib.request import urlopen, quote
    import requests
    def getlnglat(address):
        url = 'http://api.map.baidu.com/geocoding/v3/'
        output = 'json'
        ak = 'F5BrbxjbjGMMC3fGDMXK1q9' # 百度地图AK(自己创建好的应用里有,这里直接复制过来即可),
        address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
        uri = url + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak 
        req = urlopen(uri)
    #     res = req.read().decode() 这种方式也可以,和下面的效果一样,都是返回json格式
        res=requests.get(uri).text
        temp = json.loads(res) # 将字符串转化为json
        try:
            lat = temp.get('result').get('location').get('lat')
            lng = temp.get('result').get('location').get('lng')
            str_lat_lng=str(lat)+','+str(lng)
        except Exception as e:
            str_lat_lng=' , '
        return str_lat_lng  # 纬度 latitude,经度 longitude
    

    调用方法如下:

    address="四川省南充市顺庆区新世纪百货1楼"
    getlnglat(address)
    

    调用结果截图:
    在这里插入图片描述

    3.计算两个经纬度之间的直线距离

    按照上面的方法,我们可以成功匹配到经纬度,有时候我们可能需要来计算两个经纬度之间的距离。

    import numpy as np
    import pandas as pd
    import math
    
    #lat lon - > distance
    # 计算经纬度之间的距离,单位为千米
    
    EARTH_REDIUS = 6378.137
    
    def rad(d):
        return d * np.pi / 180.0
    
    def getDistance(lat1, lng1, lat2, lng2):
        #lat表示维度,lng表示经度
        radLat1 = rad(lat1)
        radLat2 = rad(lat2)
        a = radLat1 - radLat2
        b = rad(lng1) - rad(lng2)
        s = 2 * math.asin(math.sqrt(math.pow(math.sin(a/2), 2) + math.cos(radLat1) * math.cos(radLat2) * math.pow(math.sin(b/2), 2)))
        #d的单位为千米
        d = s * EARTH_REDIUS
        return d
    

    调用方法及截图:
    在这里插入图片描述

    展开全文
  • 其实用python爬取网页很简单,只有简单的几句话: 这样就可以获得到页面的内容。接下来再用正则匹配匹配所需要的内容就行了。但是,真正要做起来,就会有各种各样的细节问题。 2.登录 这是一个需要登录认证的网站...

    1.基本方法
    其实用python爬取网页很简单,只有简单的几句话:
    在这里插入图片描述
    这样就可以获得到页面的内容。接下来再用正则匹配去匹配所需要的内容就行了。但是,真正要做起来,就会有各种各样的细节问题。

    2.登录
    这是一个需要登录认证的网站。也不太难,只要导入cookielib和urllib库就行。
    在这里插入图片描述
    这样就装载进一个cookie,用urlOpener去open登录以后就可以记住信息。

    3.断线重连
    如果只是做到上面的程度,不对open进行包装的话,只要网络状况有些起伏,就直接抛出异常,退出整个程序,是个很不好的程序。这个时候,只要对异常进行处理,多试几次就行了:
    在这里插入图片描述
    4.正则匹配

    其实正则匹配并不算是一个特别好的方法,因为它的容错性很不好,网页要完全统一。如果有稍微的不统一,就会失败。后来看到说有根据xpath来进行选取的,下次可以尝试一下。

    写正则其实是有一定技巧的:

    非贪婪匹配。比如这样一个标签:hello,要取出a来,如果写成这样的表达式,就不行了:hello。因为进行了贪婪匹配。这是要用.?:hello
    跨行匹配。实现跨行有一种思路是运用DOTALL标志位,这样.就会匹配到换行。但是这样一来,整个匹配过程就会变得很慢。本来的匹配是以行为单位的。整个过程最多就是O(nc2),n是行数,c是平均列数。现在极有可能变为O((nc)2)。我的实现方案是运用\n来匹配换行,这样可以明确指出匹配最多跨跃多少行。比如:abc\s
    \n\sdef,就指出查找的是隔一行的。(.\n)?就可以指定是匹配尽可能少的行。
    这里其实还要注意一个点。有的行末是带有\r的。也就是说一行是以\r\n结尾的。当初不知道这一点,正则就调试了很久。现在直接用\s,表示行末空格和\r。
    无捕获分组。为了不对捕获的分组造成影响,上面的(.\n)可以改为(?:.\n),这样捕获分组时,就会忽略它。
    单括号要进行转义。因为单括号在正则里是用来表示分组的,所以为了匹配单括号就进行转义。正则字符串最好用的是带有r前缀的字符串,如果不是的话,则要对\再进行转义。
    快速正则。写了那么多模式,也总结出一规律出来。先把要匹配的字符相关的段落拿出来。要匹配的东西用(.?)代替。把换行\n替换为字符串\s\n\s
    ,再去掉行首行末的空格。整个过程在vim中可以很快就写好。

    5.Excel操作
    这次的数据是放进Excel的。搜索Excel,可以得出几个方案来,一个是用xlrt/xlwt库,这个不管电脑上是否安装了Excel,都可以运行,但只能是xls格式的。还有一个是直接包装了com,需要电脑上安装了软件才行。这里采用的是前一种。

    基本的读写没有问题。但是数据量一大起来,就有问题了。

    1.内存不够。程序一跑起来,内存占用就一点一点往上涨。后面再查了一下,知道要用flush_row_data。但是还是会出错。一看内存占用,没有什么问题,一直很平稳。但最后还是会出现memory error。这真是见鬼了。又是反复地查, 反复地运行。一点结果都没有。要命的是bug只在数据量大起来才出现,而等数据量大起来往往要好几个小时,这debug的成本实在是太高了。一个偶然的机会,突然发现内存占用,虽然总体平稳,但是会规律性的出现小的高涨,而这规律性,会不会和flush_row_data,有关。一直疑惑的是data被flush到了哪里。原来xlwt的作法是很蛋疼的作法。把数据存在内存里,或者flush到一个temp,到save的时候,再一次性写入。而问题正出在这一次性写入,内存猛涨。那我要flush_row_data何用?为什么不一开始就flush进要写入的地方。
    2.行数限制。这个是xls格式本身决定的,最多行数只能是65536。而且数据一大,文件打开也不方便。
    结合以上两点,最终采取了这么一个策略,如果行数是1000的倍数,进行一次flush,如果行数超过65536,新开一个sheet,如果超过3个sheet,则新建一个文件。为了方便,把xlwt包装了一下:
    在这里插入图片描述
    在这里插入图片描述
    6.转换网页特殊字符

    由于网页也有自己独特的转义字符,在进行正则匹配的时候就有些麻烦。在官方文档中查到一个用字典替换的方案,私以为不错,拿来做了一些扩充。其中有一些是为保持正则的正确性。

    在这里插入图片描述
    7.总结

    最终的程序要跑很久,其中网络通信时间占了大部分。是不是可以考虑用多线程重构一下?

    了解更多分析及数据抓取可查看:
    http://cloud.yisurvey.com:9081/html/bfd0c1a1-ea90-4ed6-9a2c-1da4cd72391c.html
    本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
    特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

    展开全文
  • 因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启8个线程并发处理,但是依然处理很...
  • 展开全部1、前言因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万e68a8462616964757a686964616f31333365666230级数据需要处理,通过awk无法进行匹配,然后我又采用java...

    展开全部

    1、前言

    因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万e68a8462616964757a686964616f31333365666230级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启8个线程并发处理,但是依然处理很慢,处理时长起码在1天+所以无法忍受这样的处理速度就采用python来处理,结果速度有了质的提升,大约处理时间为1个小时多一点,这个时间可以接受,后续可能继续采用大数据思想来处理,相关的会在后续继续更新。

    2、安装python

    第一步首先下载python软件,在官网可以根据自己情况合理下载,其余就是下一步搞定,然后在开始里面找到python的exe,点击开然后输入1+1就可以看出是否安装成功了.如下图

    3、IEDA编辑器如何使用python

    首先我们在idea中打开设置然后点击plugins,在里面有个输入框中输入python,根据提示找到如下的这个(idea版本不同可能影响python版本)图

    然后开始创建idea工程

    file->New->Project->python然后出现如下图情况(其他的下一步然后就会创建工程了)图

    4、开发前知识准备

    文件的读取,python读取文件非常的简单,我现在直接贴代码提供给大家

    其中def是函数的定义,如果我们写定义一个函数直接前面加上def,返回值可以获取后直接用return即可

    python我们直接采用with open('文件路径',模式) as f的方式来打开文件

    模式:

    跨文件引用:

    同一个层级python是采用import直接导入文件名的方式,看下一个代码

    其他说明:

    其中split和java程序的split一样,strip是去掉空格换行符等,循环(for in)模式,判断某个元素是否在数组中存在则直接使用 元素 in

    数组

    展开全文
  • 关于之前的利用python实现不同数据源的数据匹配的实验的一些思考: 在开始匹配之前一定要对于两个数据源中的记录进行分析,结合实际的应用场景判断合适的匹配字段; 开始匹配之前可以进行一些简单的判断,看看所...
  • 目前我得到俩张表格,需要根据表格A的...想求问下python有没有类似的办法可以进行相关的填写?搜索了下内容发现用merge函数貌似可以实现,但由于数据量太大(100万左右),merge的效率太慢,会直接跑不动。。 感谢回答
  • 这样就装载进一个cookie,用urlOpener去open登录以后就可以记住信息。...正则匹配其实正则匹配并不算是一个特别好的方法,因为它的容错性很不好,网页要完全统一。如果有稍微的不统一,就会失败。后来看到说有根据xp...
  • 3.1.1 如何导入CSV 数据 36 3.1.2 将代码保存到文件中并在命令行中运行 39 3.2 JSON 数据 41 3.3 XML 数据 44 3.4 小结 56 第4 章 处理Excel 文件 58 4.1 安装Python 包 58 4.2 解析...
  • drop_duplicates:去掉重复的数据(默认为所有特征值匹配才相同) groupby:按照MMSI特征值进行分组 对分组后的数据逐行进行写入 遇到的主要问题: 分组后的每一组数据如何写入不同的csv文件中。解决使用的是to_...
  • 此篇是利用Excel进行智联招聘职位分析的第一篇,让我门看看如何分析,能分析出哪些有意思的东西。 还有一篇姊妹篇,用同样的数据进行分析、不过用的是Python中的Pandas和Matplotlib而不是Excel。...
  • 今天我们的目标是,爬社区的美女~而且,我们又要用到新的姿势(雾)了~scrapy爬虫框架~1scrapy原理在写过几个爬虫程序之后,我们就知道,利用爬虫获取数据大概的步骤:请求网页,获取网页,匹配信息,下载数据数据...
  • 作为额外的福利,我将会进行一些模糊字符串匹配,以此来展示一些小花样,以及展示pandas是如何利用完整的Python模块系统去做一些在Python中是简单,但在Excel中却很复杂的事情的。 有道理吧?让我们开始吧。 为某行...
  • 最近有几个星友问到,如何进行数据的模糊匹配?本文就利用一个简单的例子,来看看PowerBI是如何快速完成模糊匹配的。模拟数据如下,有两个表,分别是各省市2018和2019年的数据,​这是个很常见的场景,由于某种原因...
  • 作为额外的福利,我将会进行一些模糊字符串匹配,以此来展示一些小花样,以及展示pandas是如何利用完整的Python模块系统去做一些在Python中是简单,但在Excel中却很复杂的事情的。 有道理吧?让我们开始吧。
  • python拆分CANLog

    2016-12-15 16:38:00
    利用python可以简单的进行这个步骤,代码如下: 说明:  最终的效果是将log信息,分不同的ID进行拆分,并单独生成文件log_id.csv的文件夹。  1. 需要输入输入文件夹  2. 生成_out文件夹。  3. 没有错误处理...
  • 如何监控一系列网站的更新情况,也就是说,如何进行增量式爬取? 对于海量数据,如何实现分布式爬取? 分析 抓取之后就是对抓取的内容进行分析,你需要什么内容,就从中提炼出相关的内容来。 常见的分析工具有...
  • 利用pyltp包的分词、词性标注、命名实体识别、依存句法分析、语义角色标注功能处理网页抓取的评论数据。在实际运行的时候我们还对数据进行了一定的预处理,比如分句、去除特殊符号之类的。初始载入模型时内存...
  • 本书通过处理不良数据,进行数据清理的案例,向读者展示了处理数据的方法。 本书共有19章,从6部分向读者展示了使用和清理不良数据背后的理论和实践。第1部分是Grubby的动手实践指南,它向读者介绍了驾驭、提取数据...
  • 该解决方案演示了如何实施和利用英特尔硬件平台进行端到端视频分析,包括使用各种媒体堆栈进行解码,编码和优化。 您将学到什么 此应用程序使用OpenVINO:trade_mark:工具箱的英特尔:registered:发行版将高分辨率...
  • 我们之前已初步介绍过如何利用SQL对文本进行检索和编辑,而今天,我们将要介绍一种更为“高大上”并且可以与Python通用的方式来高效地匹配文本——正则表达式。包罗万象正则表达式的作用是匹配文本,将一个“模式”...
  • Spring Boot 2.0.0.M7 如何进行远程调试 Spring Boot 生产准备-基于HTTP的监控 Spring Boot 集成 Druid springboot思维导图 springboot activemq安装 spring-boot单元测试 springboot使用hibernate validator校验 ...
  • 直接对所有查询结果数据进行匹配替换 解析语句比较精准,没有误伤,但是语法解析相对困难,会存在比较多的限制 希望如何解决/实现它 其他信息 语法解析相关开源库 - 小米SOAR:go实现࿰...
  • 主要研究在不同的细分场景下的控制策略,比如在十字路口如何控制,转线如何控制,在感知数据不可靠时如何尽量安全的控制等等。 7. 车辆检测与跟踪(VehicleDetection and Tracking): 主要关注如何通过激光雷达...
  • 10.5.1 利用复制操作创建新数据表 212 10.5.2 把数据复制到现有数据表 213 10.6 统计报表 213 10.6.1 涉及titles、languages和cate-gories数据表的统计报表 214 10.6.2 月度查询统计报表 215 10.7 子查询 216 ...
  • Q: 利用PaddleHub Fine-tune如何适配自定义数据集? A: 参考PaddleHub适配自定义数据集完成Fine-tune。 Q: 使用PaddleHub时,无法下载预置数据集、Module的等现象。 A: 下载数据集、module等,PaddleHub要求机器可以...
  • Q: 利用PaddleHub Fine-tune如何适配自定义数据集? A: 参考PaddleHub适配自定义数据集完成Fine-tune。 Q: 使用PaddleHub时,无法下载预置数据集、Module的等现象。 A: 下载数据集、module等,PaddleHub要求机器可以...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

利用python如何进行数据匹配

python 订阅