精华内容
下载资源
问答
  • 数据收集:网络爬虫、公开数据集、客户数据 数据处理:数据清洗、数据规整 数据分析:数据统计、探索性数据分析(EDA)、数据建模 结果展示:数据可视化、报表生成、结果保存 数据收集:获取歌单索引页、...
  • 《Python3爬虫、数据清洗与可视化》pdf+配套代码+数据集,亲测全部有效,提供给大家学习交流!欢迎下载
  • CASIA-WebFace数据集清洗

    千次阅读 2019-08-21 16:42:19
    中科院李子青课题组于2014年发布的CASIA-WebFace数据集收集了10000多个名人的照片,然而,这些照片是在网上用爬虫扒下来的,所以有一些数据存在问题,这里对这个数据集清洗。 1:使用RetinaFace对给定的图片做人脸...

    中科院李子青课题组于2014年发布的CASIA-WebFace数据集收集了10000多个名人的照片,然而,这些照片是在网上用爬虫扒下来的,所以有一些数据存在问题,这里对这个数据集做清洗。
    1:使用RetinaFace对给定的图片做人脸检测,对于提取不到landmark/boundingbox的图片逐个做分析。
    2:将图像缩小送进网络训练发现很多都可以检测出来了,其实retinaface对尺度比较小的图片效果会好很多

    展开全文
  • 手动爬取的知乎问题数据,共十万条,已做过简单清洗数据集格式描述如下: id | 标题 | 回答数 | 关注数 | 浏览数 | 标签 【仅供学习使用,请勿商用】
  • 爬取完数据之后,需要对数据进行清洗,使其成为能够被我们利用的数据集。这里我爬取了一个手机尺寸的网站,准备计算得到其高宽信息,并生成了一个数据集。后面会根据这个数据集进行一下分类操作。 当然现在如果把...

    前言

    机器学习很重要的一部分就是数据,因此可以通过爬虫爬取一些数据。爬取完数据之后,需要对数据进行清洗,使其成为能够被我们利用的数据集。这里我爬取了一个手机尺寸的网站,准备计算得到其高宽信息,并生成了一个数据集。后面会根据这个数据集进行一下分类操作。
    当然现在如果把爬虫爬到的数据用于商业,现在很多时候是不合法的,还是要注意点。

    准备工作

    这里使用的是python 3.6进行实现的,需要安装如下一些库:

    beautifulsoup4
    requests
    lxml
    tensorflow
    scikit-learn
    pandas
    matplotlib
    

    这些库一部分是后面四个是用于分类的,可以先不下。我们这边就使用了requests+beautifulsoup+lxml爬取数据并进行结构分析。

    主要工作

    发送请求下载页面

    可以直接解析页面,但保险起见还是先下载下来然后在进行处理比较好,不然重复请求别人的网页也不是很好也没什么必要,所以写了一个从txt中读取保存页面的函数。
    因为有好几个页面,所以循环调用了好次,将页面都保存为txt文件。主要函数如下:

    PAGES = ['index', 'pad', 'watch', 'computer', 'display']
    
    def get_page_content_crawler(url, page_name):
        try:
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36',
            }
            url = url % page_name
            page_content = requests.get(url=url, headers=headers)
            page_content.encoding = 'utf-8'
            content = page_content.text
            save_page_content2txt(content, page_name)
            return content
        except:
            s = sys.exc_info()
            print("Error '%s' happened on line %d" % (s[1], s[2].tb_lineno))
            return "ERROR"
    
    
    def get_page_content_from_txt(page_name):
        with open('%s.txt' % page_name, 'r') as f:
            html = f.read()
        soup = BeautifulSoup(html, 'lxml')  # 采用lxml进行解析
        return soup
    
    
    def save_page_content2txt(content, page_name):
        with open('%s.txt' % page_name, 'w') as f:
            for i in content:
                f.write(i)
    

    读取页面并解析

    页面如下所示,是一个表格:
    屏幕
    分析网页html的结构如下,可以发现有且仅有一个tbody,而每个设备的信息都是存在一个tr里面的,相关信息也是有对应的class。

    <tbody>
       <tr>
           <td class="td01" valign="middle">iPhone 11 Pro</td>
           <td class="td02" valign="middle">iOS</td>
           <td class="td03" valign="middle">5.8</td>
           <td class="td04" valign="middle">458</td>
           <td class="td05" valign="middle">19 : 9</td>
           <td class="td06" valign="middle">414 x 896</td>
           <td class="td07" valign="middle">1125 x 2436</td>
           <td class="td08" valign="middle">3.0
               <font class="gray01">xxhdpi</font>
           </td>
       </tr> 
    ......
    

    因此撰写结构分析的代码:

    def extract_content2excel(soup, page_name):
        all_devices = soup.find('tbody')
        one_device = all_devices.find_all_next('tr')
        with open('%s.csv' % page_name, 'w') as f:
            writer = csv.writer(f)
            header = ['name', 'device_os', 'size', 'ppi', 'aspect_ratio', 'wh_dp', 'wh_px', 'dpi']
            writer.writerow(header)
            for device in one_device:
                name = device.find('td', class_='td01').text
                device_os = device.find('td', class_='td02').text.replace(' ', '')
                size = device.find('td', class_='td03').text.replace(' ', '')
                ppi = device.find('td', class_='td04').text.replace(' ', '')
                aspect_ratio = device.find('td', class_='td05').text.replace(' ', '')
                wh_dp = device.find('td', class_='td06').text.replace(' ', '')
                wh_px = device.find('td', class_='td07').text.replace(' ', '')
                dpi = device.find('td', class_='td08').text.replace(' ', '').replace('\n', '')
                content = [name, device_os, size, ppi, aspect_ratio, wh_dp, wh_px, dpi]
                writer.writerow(content)
    

    将其中一些空格去除,然后存入一个csv文件中,多个页面会有多个文件。

    生成数据集

    整合多个csv文件

    csv文件是以逗号为分割符的,有多种方式可以读取。爬取的数据如下,我们可以知道手机屏幕是多少吋,一般是指对角线的长度,而1寸=2.54厘米,因此可以根据尺寸和纵横比计算手机的高和宽。

    name,device_os,size,ppi,aspect_ratio,wh_dp,wh_px,dpi
    iPhone 11 Pro,iOS,5.8,458,19:9,414x896,1125x2436,3.0xxhdpi
    iPhone 11 Pro Max,iOS,6.5,458,19:9,414x896,1242x2688,3.0xxhdpi
    iPhone 11 (11,XR),iOS,6.1,326,19:9,414x896,828x1792,2.0xhdpi
    iPhone XS Max,iOS,6.5,458,19:9,414x896,1242x2688,3.0xxhdpi
    .......
    

    这里取第三列和第五列的数据即可,根据上面的公式计算得到高和宽:

    def read_csv(page_name):
        '''
        读取csv中的数据
        :param page_name:文件的名称
        :return: np格式的str list(name, height, width)
        '''
        with open('%s.csv' % page_name, 'r', encoding='UTF-8') as f:
            f_csv = csv.reader(f)
            header = next(f_csv)  # 忽略表头
            device_info = np.empty([0, 3])
            for r in f_csv:
                if r[2][0] == '-' or r[4][0] == '-':  # 清洗数据
                    continue
                height, width = get_wh_from_size(r[2], r[4])
                one_device = (r[0], height, width)  # 这里会导致height和width转化成str
                device_info = np.row_stack((device_info, one_device))
        return device_info
    
    def get_wh_from_size(size, aspect_ratio):
        '''
        解析csv文件中的数据
        :param size: 手机尺寸(吋表示对角线)
        :param aspect_ratio: 纵横比
        :return: 高、宽(单位已经转化为cm)
        '''
        ratio = map(float, aspect_ratio.split(':'))
        height_ratio, width_ratio = list(ratio)
        hypotenuse_ratio = math.sqrt(height_ratio**2 + width_ratio**2)
        hypotenuse_cm = float(size) * 2.54
        height = round((height_ratio * hypotenuse_cm / hypotenuse_ratio), 2)
        width = round((width_ratio * hypotenuse_cm / hypotenuse_ratio), 2)
        return height, width
    

    可视化并保存数据集

    使用添加的方式将每一行保存到data.csv中,这里写的不算特别好,因为每次添加一行都进行了一次文件打开的操作,有点消耗内存,可以考虑所有的存储为array再打开文件。

    def draw_scatter():
        # 拼接三个数据
        devices = []
        for page in PAGE:
            device_info = read_csv(page)
            devices.append(device_info)
    
        all_data = []
        for device in devices:
            point = (device.T[1], device.T[2])
            all_data.append(point)
    
        groups = ('phone', 'pad', 'PC')
        colors = ('red', 'blue', 'green')
    
        # Create plot
        fig = plt.figure()
        ax = fig.add_subplot(1, 1, 1)
    
        for data, color, group in zip(all_data, colors, groups):
            x, y = data
            print(group, "的数量是:", len(x))
    
            index = groups.index(group)
            save_data_csv(index, list(x.T), list(y.T))
            print(x.shape, y.shape)
            x = list(map(np.float32, x))
            y = list(map(np.float32, y))
    
            ax.scatter(x, y, alpha=1, c=color, edgecolors='none', s=30, label=group)
            ax.axis('auto')
        plt.title('Device Size Scatter')
        plt.legend(loc=2)
        plt.xlabel('height')
        plt.ylabel('width')
        plt.show()
    
    
    def save_data_csv(label, *paras):
        # 添加,newline使得新行无回车
        with open('data.csv', 'a+', newline='') as f:
            writer = csv.writer(f)
            if label == 0:
                writer.writerow(['height', 'width', 'label'])
    
            paras = np.array(paras).T
    
            for item in paras:
                content = []
                for para in item:
                    content.append(para)
                content.append(label)
                writer.writerow(content)
    

    最终的数据分布如下:
    数据分布
    数据格式如下,分为三列进行了保存:

    height,width,label
    13.31,6.31,0
    14.92,7.07,0
    14.0,6.63,0
    14.92,7.07,0
    ...
    20.73,15.54,1
    16.05,12.04,1
    21.34,16.0,1
    ...
    25.85,16.15,2
    25.68,14.45,2
    28.65,17.9,2
    

    完成数据集制作之后我们就可以随意进行操作了。

    参考链接

    1. https://www.jianshu.com/p/47908cd4f424
    2. https://uiiiuiii.com/screen
    展开全文
  • Python3爬虫、数据清洗与可视化配套资源代码和数据集 零一 韩要宾 黄园园 Python技术入门读物,通过实战教初学者
  • 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI想做...网页、清洗数据、创建数据集都可以搞定。她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。开源仅一天,项目在...

    乾明 发自 凹非寺

    量子位 报道 | 公众号 QbitAI

    想做研究,却没有足够的数据,着实让人抓狂、苦恼。

    现在,你可以自己动手创建数据集了。

    英伟达工程师小姐姐Chip Huyen,在GitHub上开源了一个名为“lazynlp”的工具库。

    爬网页、清洗数据、创建数据集都可以搞定。

    她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。

    0d41337bb8708e0f6623634454db3075.png

    开源仅一天,项目在GitHub上就获得了300多星,Twitter上获得上千次点赞。fast.ai创始人Jeremy Howard等人也转发推荐。

    而且,用这个工具库创建数据集的过程,也并不麻烦。

    五步走,一条龙

    第一步,获取你想抓取的网页的网址。

    小姐姐提供了三个你可以直接拿走使用的网址集合,分别来自Reddit、古腾堡计划(电子书)、维基百科。

    当然,你也可以下载自己的。

    第二步,删除重复的网址。

    网址有很多,重复也在所难免。

    这里提供了两种方法,来删除重复的网址。

    0f9b41c3142ea28b3846e30f1eb3b732.png

    第三步,下载网址内容。

    这里提供了两种方法,一种可以并行下载多个文件,另一种可以单独下载网页内容。

    如果网址数量比较大,可以将列表分成多个文件的,分别调用函数。

    小姐姐说,自己能够并行40个脚本,下载起来也更容易一些。

    第四步,清理网页。

    这一步有3个方法可以选择,一是使用lazynlp/cleaner.py中的方法,二是直接调用命令行:

    lazynlp.clean_page(page)

    另外,也可以使用lazynlp.download_pages ( )函数,同时爬网页并清理。

    第五步,删除重复网页。

    网站下载好了,该清理的东西都清理了,接下来需要去重。

    不然就会有一些文本重复出现,从而影响数据集的表现。

    小姐姐提供了3个函数,可以帮你完成步骤。

    做完这些,你就有自己的NLP数据集了,想干什么就可以放手去做了。

    如果你有想法,请收好下面的传送门:

    https://github.com/chiphuyen/lazynlp

    展开全文
  • 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI想做...网页、清洗数据、创建数据集都可以搞定。她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。开源仅一天,项目在...

    220d15c7f2e5ef5d425b8a3956024ec4.png
    乾明 发自 凹非寺
    量子位 报道 | 公众号 QbitAI

    想做研究,却没有足够的数据,着实让人抓狂、苦恼。

    现在,你可以自己动手创建数据集了。

    英伟达工程师小姐姐Chip Huyen,在GitHub上开源了一个名为“lazynlp”的工具库。

    爬网页、清洗数据、创建数据集都可以搞定。

    她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。

    81c88e73074716795b6f54b9b3ea0d4d.png

    开源仅一天,项目在GitHub上就获得了300多星,Twitter上获得上千次点赞。fast.ai创始人Jeremy Howard等人也转发推荐。

    而且,用这个工具库创建数据集的过程,也并不麻烦。

    五步走,一条龙

    第一步,获取你想抓取的网页的网址。

    小姐姐提供了三个你可以直接拿走使用的网址集合,分别来自Reddit、古腾堡计划(电子书)、维基百科。

    当然,你也可以下载自己的。

    第二步,删除重复的网址。

    网址有很多,重复也在所难免。

    这里提供了两种方法,来删除重复的网址。

    0017e570e4233c1419ca7bc99262b01a.png

    第三步,下载网址内容。

    这里提供了两种方法,一种可以并行下载多个文件,另一种可以单独下载网页内容。

    如果网址数量比较大,可以将列表分成多个文件的,分别调用函数。

    小姐姐说,自己能够并行40个脚本,下载起来也更容易一些。

    第四步,清理网页。

    这一步有3个方法可以选择,一是使用lazynlp/cleaner.py中的方法,二是直接调用命令行:

    lazynlp.clean_page(page)

    另外,也可以使用lazynlp.download_pages ( )函数,同时爬网页并清理。

    第五步,删除重复网页。

    网站下载好了,该清理的东西都清理了,接下来需要去重。

    不然就会有一些文本重复出现,从而影响数据集的表现。

    小姐姐提供了3个函数,可以帮你完成步骤。

    做完这些,你就有自己的NLP数据集了,想干什么就可以放手去做了。

    如果你有想法,请收好下面的传送门:

    https://github.com/chiphuyen/lazynlp

    量子位 · QbitAI

    վ'ᴗ' ի 追踪AI技术和产品新动态

    戳右上角「+关注」获取最新资讯↗↗

    如果喜欢,请分享or点赞吧~比心❤

    展开全文
  • 网页、清洗数据、创建数据集都可以搞定。 她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。 开源仅一天,项目在GitHub上就获得了300多星,Twitte...
  • 数据分组 按照City分组,并计算sum值的平均数。 如果一次传入多个数组,就会得到按多列数值分组的统计结果。...pandas有一些内置的合并数据集方法,如下所示: pandas.merge根据一个或多个键将多个DataFrame连...
  • 最近在做一个项目,爬虫获取的数据可谓一锅粥,果断选择了正则表达式,下面是常用的规则:表达式全集字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”...
  • 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI想做...网页、清洗数据、创建数据集都可以搞定。她说,使用这个库,你应该能创建一个比大于40G的文本数据集,比OpenAI训练GPT-2时使用的还要大。开源仅一天,项目在...
  • 最近在做一个项目,爬虫获取的数据可谓一锅粥,果断选择了正则表达式,下面是常用的规则: 表达式全集 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符...
  • 人脸数据清洗方法+代码汇总

    千次阅读 2019-01-27 17:21:42
     这里的野数据集指的是从互联网上取出的原始人脸数据集,它的特点是:脏、乱、杂 。数据分布不均匀、尺寸不一、存在年龄跨度较大现象,图像格式命名错误且存在较多的冗余、杂质,但优点是类别数目大。使用前需要...
  • 一、这个数据集对应的产品与国内哪...网页地址如下:中小幼教育培训班_在线中小幼教育学习辅导班_中小幼教育培训价格-沪江网校数据集大小及特征:该数据集经简单清洗后,共计13个字段,492行,具体如下:ID:编号 ;...
  • 上一篇文章写了如何在Google的open image v4上分类下载数据集并保存成yolo格式,这里接着写。为了确认标注没有问题,我们可以用yolo_mark来清洗一遍。而有时可能我们需要自己采集数据,这里我用树莓派加上一个广角...
  • scrapy - 最出名的网络爬虫,一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面... BeautifulSoup - Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获..
  • 使用Scrapy编写职友爬虫 本文针对刚刚接触爬虫或scrapy框架的朋友,...清洗数据 存储数据 之后我们所做的所有工作都是在这四步的基础之上扩展的, 如果你是刚刚接触爬虫的新手, 请在心中牢记这四个基本步骤, ...
  • 数据集字段含义: Brand:品牌 Name:型号 Boarding_time:上牌时间 Km:里程数 Discharge:排放标准 Sec_price:二手车价格 New_price:新车价格 2、缺失值的查找和处理 SELECT count(*) FROM used_car_...
  • 在网络数据采集中,不可避免地会遇到样式不规范的数据,而且无法对数据集进行挑剔,所以掌握数据清洗的方法十分必要。   本文主要内容是利用Python从网页上爬取格式混乱的英文讲稿,然后将数据进行清
  • 作者:数据不吹牛 来源:数据...完整代码和数据放在文末,如果单纯需要数据集练手的同学可以在底部下载(4400条产品数据)其实,这篇文章灵感源自一个赌局:程序员朋友小A又在和小Z抱怨脱发问题。小A:“以这样的掉...
  • 【程序人生 编者按】本文通过淘宝“防脱发洗发水”爬取和分析,来提供爬取海量淘宝商品信息的思路,除了基础爬虫外,还应该思考拿到类似的商品数据之后如何清洗,以及作为一个分析者...
  • 本文通过淘宝“防脱发洗发水”爬取和分析,来提供爬取海量淘宝商品信息的思路,除了基础爬虫外,还应该思考拿到类似的商品数据之后如何清洗,以及作为一个分析者可以从什么维度去分析。 作者 |周志鹏 责编| 仲...
  • 都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大 家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,Python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据,...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

数据集清洗爬