Python机器学习—导入各种数据的N种办法
pandas 读取数据
1、read_csv(),用来读取CSV文件
AAPL,31-01-2011, ,335.8,340.04,334.3,339.32,13473000
AAPL,01-02-2011, ,341.3,345.65,340.98,345.03,15236800
AAPL,02-02-2011, ,344.45,345.25,343.55,344.32,9242600
AAPL,03-02-2011, ,343.8,344.24,338.55,343.44,14064100
AAPL,04-02-2011, ,343.61,346.7,343.51,346.5,11494200
AAPL,07-02-2011, ,347.89,353.25,347.64,351.88,17322100
AAPL,08-02-2011, ,353.68,355.52,352.15,355.2,13608500
AAPL,09-02-2011, ,355.19,359,354.87,358.16,17240800
AAPL,10-02-2011, ,357.39,360,348,354.54,33162400
AAPL,11-02-2011, ,354.75,357.8,353.54,356.85,13127500
AAPL,14-02-2011, ,356.79,359.48,356.71,359.18,11086200
使用read_csv函数导入csv文件
语法:read_csv(file,encoding)
file:csv文件所在的路径,如果文件在工作路径下,这里直接写文件名就好,如果不在工作路径下,得把文件的路径也写上
encoding:文件的编码类型,如果导入的是中文,则设置为utf-8
%cd "E:\WorkSpace\Python"-------------->设置工作空间
例:
- <pre name="code" class="python">In[35]:%cd "E:\WorkSpace\Python"
- from pandas import read_csv
- cs = read_csv("student.csv",encoding='utf-8')
- cs
- E:\WorkSpace\Python
我运行以上代码报错:UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 0: invalid start byte
于是我把cs = read_csv("student.csv",encoding='utf-8')改成cs = read_csv("student.csv"),没报错了,英文可以正常显示,但是中文读出来是乱码
后来我想会不会是文件本身的编码有问题,于是在Notepad中查看了一下文件的编码,果然不出所料,文件的编码是默认的ANSI格式,在Notepad里把文件编码改了,果然,成功排雷,读取成功了:结果如下:
- In[35]:%cd "E:\WorkSpace\Python"
- from pandas import read_csv
- cs = read_csv("student.csv",encoding='utf-8')
- cs
- E:\WorkSpace\Python
- Out[35]:
- 付靖玲 23 女
- 0 Jeny 24 女
- 1 Tom 25 男
但是问题来了,因为我的数据没有列名,它读出来默认把我的第一行作为列名了,继续挖雷...,看了一下pandas的API,终于豁然开朗,大有收获,原来这个read_csv函数是有很多参数的,它的函数申明格式如下:
pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None,usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None,converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=None,nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True,parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False,iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None,quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False,error_bad_lines=True, warn_bad_lines=True, skip_footer=0, doublequote=True, delim_whitespace=False,as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None,memory_map=False, float_precision=None)¶
这里的每一个参数的用法我就不一一解释了,如果用到的时候可以去查看API,里面解释的非常清楚,继续说我的雷,API告诉我要解决这个问题,关键在于header这个参数,header参数的说明如下:
header : int or list of ints, default ‘infer’
Row number(s) to use as the column names, and the start of the data. Default behavior is as if set to 0 if no names passed, otherwise None. Explicitly pass header=0to be able to replace existing names. The header can be a list of integers that specify row locations for a multi-index on the columns e.g. [0,1,3]. Intervening rows that are not specified will be skipped (e.g. 2 in this example is skipped). Note that this parameter ignores commented lines and empty lines if skip_blank_lines=True, so header=0 denotes the first line of data rather than the first line of the file.
意思也就是说,这个参数是用来设置数据的列名的,默认第0行就是数据的列名,如果没有列名的话,就把这个参数设置成None,于是把代码改成以下形式
- cs = read_csv("student.csv",encoding='utf-8',header=None)
- cs
- Out[45]:
- 0 1 2
- 0 付靖玲 23 女
- 1 Jeny 24 女
- 2 Tom 25 男
成功排了这颗雷。。。
34love545
343love455
767love545
- >>> ca = pd.read_table("a.txt",sep='love',header=None)
- >>> ca
- 0 1
- 0 12 34
- 1 34 545
- 2 343 455
- 3 767 545
- >>> ca = pd.read_table("a.txt",sep='love',names=['start','end'],header=None)
- >>> ca
- start end
- 0 12 34
- 1 34 545
- 2 343 455
- 3 767 545
4、read_excel()
该函数用来导入excel文件
函数的原型声明如下:
pandas.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None,parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True,has_index_names=None, converters=None, engine=None, squeeze=False, **kwds)
常用的参数有:
io : (文件路径)string, path object (pathlib.Path or py._path.local.LocalPath),
file-like object, pandas ExcelFile, or xlrd workbook. The string could be a URL. Valid URL schemes include http, ftp, s3, and file. For file URLs, a host is expected. For instance, a local file could be file://localhost/path/to/workbook.xlsx
names:列名,默认第一行为列名,也可指定列名
sheetname:表单的名字,默认就是excel中的第0个表单被导入
Python机器学习—导入各种数据的N种办法的更多相关文章
- ORACLE导入大量数据的两种方式比较
不管是开发还是测试,工作中经常需要去批量新增测试数据,但是大量数据的新增速度有时候让我们苦不堪言,下面通过两种方式完成oracle数据的批量新增,比较两种方式的效率. 第一种方式:采用工具导入sql文 ...
- python爬虫-提取网页数据的三种武器
常用的提取网页数据的工具有三种xpath.css选择器.正则表达式 1.xpath 1.1在python中使用xpath必须要下载lxml模块: lxml官方文档 :https://lxml.de/i ...
- python爬虫解析页面数据的三种方式
re模块 re.S表示匹配单行 re.M表示匹配多行 使用re模块提取图片url,下载所有糗事百科中的图片 普通版 import requests import re import os if not ...
- python多进程程序之间交换数据的两种办法--Queue和Pipe
合在一起作的测试. #!/usr/bin/env python # -*- coding: utf-8 -*- import multiprocessing import random import ...
- MariaDB快速批量插入数据的几种办法
前言 当要向MariaDB中插入新的数据时,以下过程会影响插入所消耗的时间:(按时间消耗长短降序排序) 将数据sync到磁盘上(它是事务结束的一部分) 添加新的键值.索引越大,更新键值所消耗的时间就越 ...
- 在controller间分享数据(第一种办法)
Blood 血腥的方法 每个controller都有自己的scope, 同时也可以共享他们老爸的scope内的数据.如果我们想让两个controller共享数据的化, 有多种方法. 最直接血腥的就是在 ...
- python无法导入自己的模块的解决办法
- [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载数据集
<Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...
- [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载文件
<Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...
随机推荐
- Django入门-通用视图
文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...
- Redis 基础(一)
Remote Dictionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统.Redis是一个开源的使用ANSI C语言编写.遵守BSD ...
- 鹅厂优文 | 决策树及ID3算法学习
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:袁明凯|腾讯IEG测试开发工程师 决策树的基础概念 决策树是一种用树形结构来辅助行为研究.决策分析以及机器学习的方式,是机器学习中的 ...
- bootstrap 栅格系统 自动隐藏
1 Container 顾名思义Container是栅格系统最外层的class,直接被container包裹的只能是row这个class.需要注意的是container自带左右各15px paddin ...
- 关于js高度和宽度的获取 ----2017-03-29
来源:百度 对错有待实践检验 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: docu ...
- generator生成器iterator遍历器和yield
generator方法()返回一个iterator 使用generator时永远先去调用generator()方法 for of对iterator的调用过程(babel参照) 1,_iterator. ...
- Java高级篇(一)——线程
前面我们系统的了解了Java的基础知识,本篇开始将进入到Java更深层次的介绍,我们先来介绍一下Java中的一个重要的概念--线程. 一.什么是线程 在了解线程前,我们首先要了解进程的概念.进程是操作 ...
- Jmeter----基本介绍(1)
1.Jmeter 基本介绍 简单的说,就是Jmeter能做 功能测试 和 性能测试 .它能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试,还能以多种形式展现测试结果. ...
- linux --> Event Loop介绍
Event Loop介绍 想要理解Event Loop,就要从程序的运行模式讲起.运行以后的程序叫做"进程"(process),一般情况下,一个进程一次只能执行一个任务. 如果有很 ...