您的位置:首页 > 编程语言 > Python开发

python数据挖掘和分析(二)

2018-02-12 17:37 274 查看
这一章我们讲如何将数据导入到Python中以便我们进行处理。数据导入的方式有很多,经常用的就是从数据库直连得到数据,从csv文件读取数据,从Excel文件读数据,从HTML中读数据,从TXT中读数据。

我们挨个讲解一下:

从csv中导入数据,数据使用mysql5.7的sakila库里的actor表内数据:

a = pda.read_csv("C:/Users/yuexiao.liu/Desktop/2.csv")
print(a.head())


结果如下:

actor_id first_name     last_name          last_update
0         1   PENELOPE       GUINESS  2006-02-15 04:34:33
1         2       NICK      WAHLBERG  2006-02-15 04:34:33
2         3         ED         CHASE  2006-02-15 04:34:33
3         4   JENNIFER         DAVIS  2006-02-15 04:34:33
4         5     JOHNNY  LOLLOBRIGIDA  2006-02-15 04:34:33


在某些时候会报UnicodeDecodeError错误,因为字符集的原因,这个时候根据提示的字符集比如说utf-8字符集进行声明即可,例如:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
#对应处理方法:
a = pda.read_csv("C:/Users/yuexiao.liu/Desktop/2.csv",encoding="utf-8")


如果是excel数据要导入到python中,我们这样做:

b = pda.read_excel("C:/Users/yuexiao.liu/Desktop/3.xlsx")


执行此命令可以看到有一个报错:

ImportError: Install xlrd >= 0.9.0 for Excel support


为此我们安装xlrd模块,在此不细说了,安装之后再执行报错消失。

print(type(b))


结果:

<class 'pandas.core.frame.DataFrame'>


还有一种方式是直连数据库,从数据库取数据,那么怎么做呢?以安装在本地的mysql数据库为例,先安装pymysql模块(pymysql3模块也行,不知道这两个模块有什么区别。但是使用的时候都是import pymysql):

import pymysql
conn = pymysql.connect(host='127.0.0.1',user='root',passwd='******',db='sakila')
sql = "select * from actor"
c = pda.read_sql(sql,conn)
print(c.head())


可以看到结果:

actor_id first_name     last_name         last_update
0         1   PENELOPE       GUINESS 2006-02-15 04:34:33
1         2       NICK      WAHLBERG 2006-02-15 04:34:33
2         3         ED         CHASE 2006-02-15 04:34:33
3         4   JENNIFER         DAVIS 2006-02-15 04:34:33
4         5     JOHNNY  LOLLOBRIGIDA 2006-02-15 04:34:33


我这里pycharm并没有出现编码的问题,有的工具使用这个模块可能会报编码错误,这个时候可以修改pymysql的源文件,找到你安装的pymysql的位置(使用搜索),进入然后找到pymysql下面的connects文件,更改,在其中查找charset=跳到def init(…,charset=”,…)此时默认为空,要添加上utf8,不带 “-” 。c里的数据不能直接取出来,只能一行一行取,查看其中一行返回值使用value方法:

print(c.values[1])


结果显示:

[2 'NICK' 'WAHLBERG' Timestamp('2006-02-15 04:34:33')]


要从HTML文件中导入数据:

d = pda.read_html("C:/Users/yuexiao.liu/Desktop/4.htm")


不过这个时候会因为我们没有安装基础的lxml、Beautifulsoup4和htmllib模块报错:

ImportError: lxml not found, please install it
#或者
ImportError: html5lib not found, please install it
#或者
ImportError: BeautifulSoup4 (bs4) not found, please install it


安装之后就不会报错了。注意,d不能使用head或tail方法,因为它返回的是一个列表:

print(type(d))
<class 'list'>


导入TXT文件里面的数据步骤如下:

f = pda.read_table("C:/Users/yuexiao.liu/Desktop/1.txt")


注意!在导入的时候可能出现两个错误,一个是UnicodeDecodeError错误,这个需要查看TXT文件的编码或者更改TXT文件的编码,此处我将其改为utf-8格式的编码错误解决,一个是OSError错误,此错误通过将文件名从中文改为英文或者其他文件名即可解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据分析基础