在前面的文章中,我们了解了Python爬虫的一些内容。截止到现在,我们已经可以将需要的数据通过爬虫获取,并保存到CSV文件中。
在有了数据集后,接下来我们就开始了解如何将数据集的内容加载到Python中。虽然在之前也有了解简单的读取csv数据。但是存在两个问题:
只能读取csv文件,但数据分析的数据除了可能来自csv,也可能来自Excel,甚至可以来自html的表格。读取到的结果一般是字典列表,并不利于分析,比如虽然我们每个字典就代表一行记录,但一旦我们想拿某一列的数据的时候就会非常复杂。Python作为数据分析领域的头号种子选手,自然不会只有csv模块这样的初级工具。这个部分我们将会学习表格类型的大数据处理神器:pandas.
pandas不仅可以从多种不同的文件格式读取数据,还有各种各样的数据处理的功能。可以说学好了pandas,就基本已经算踏上了数据分析之路。话不多说,我们这就开始pandas之旅。
1、安装pandas打开开始菜单→Anaconda→AnacondaPrompt,并输入condainstallpandas回车执行,如下图所示。
输入y完成安装即可。
2、使用pandas读取csv文件首先我们来了解如何使用pandas来读取csv文件。
pandas模块提供了一个read_csv的方法,可以直接读取csv文件,并返回一个DataFrame对象。DataFrame对象是pandas模块的核心,pandas的所有表格都是通过DataFrame对象来存储的,并且DataFrame还提供了非常多查看数据、修改数据的方法。我们在之后的文章中会逐渐了解DataFrame的用法。
现在只需要知道,pandas可以直接从一个csv文件中,将数据读到Python中,并且以DataFrame对象的形式返回,我们拿到这个对象就可以查看其中的数据就可以了。
(1)实战read_csv新建Cell,输入如下的代码。
#使用pandas模块的read_csv函数,读取csn文件。并将结果存在df_rating变量中df_rating=pd.read_csv("tv_rating.csv")#打印df_rating变量print("df_rating:")print(df_rating)#打印df_rating变量的类型print("df_ratingtype:")print(type(df_rating))
运行之后输出如下所示。
从上面的输出中可以看到,df_rating变量中包含了我们csv文件中的所有数据,并且还有形状的描述:行x列,这个也和我们下载的数据一致。通过打印df_rating的类型,可以看到df_rating的类型就是我们上文提到的DataFrame。
(2)更好看的表格DataFrame很强大,它甚至针对notebook有专门优化。回到DataFrame,当我们不是直接用print打印它,而是把DataFrame变量放在Cell的末尾时,notebook就会用一种更好看的格式来打印它。我们马上来试一下,直接新建一个Cell,输入如下的代码运行。
df_rating
输出如下:
可以看到这一次的格式可比上一次好看多了,更像一个表格,对应的也更加整齐。
、使用pandas读取excel文件在Python还没有兴起之前,大量的数据分析是通过Excel完成的。这也造就了在很多传统行业中,还有大量的数据是保存在Excel中,所以读取Excel也是进行分析也是Python数据分析领域的常见任务。
Excel的.xls/.xlsx文件格式是微软针对表格开发的,只能使用Excel来打开,比如用记事本打开往往会看到有乱码。那Python是怎么读取Excel里面的内容呢?那自然是我们本模块的SuperStar:pandas。
类似csv的读取,pandas也提供了read_excel函数来实现读取excel文件中的内容,但是使用方法比read_csv稍微复杂一些。
(1)数据准备打开Excel,将第一个表格(sheet)的名字改为:基本信息,并添加下述内容
再新建一个sheet,表格名字改为:绩效,并添加如下内容
(2)读取数据数据准备完毕了,现在我们来读取我们刚才创建的表格。形式类似刚才的read_csv。
代码如下:
#使用read_excel函数,读取info.xlsx的内容并存储在df_info变量中df_excel=pd.read_excel("info.xlsx")#不用print,直接将df_info放在最后一行,让notebook用表格形式打印df_excel
输出如下:
可以看到,Excel中的数据被成功的打印了出来,和read_csv一样,read_excel返回的也是一个DataFrame。
不过内容虽然打印出来了,但是只打印出了第一个表格,也就是“基本信息”这个表格,我们后面添加的“绩效”表格并没有打印出来。这是pandas的机制导致的,read_excel默认读取excel文件中的一个表格。
一个Excel中包含多个表格还是很常见的,pandas不可能坐视不理,如何读取更多的表格呢?
()读取不同的表格read_excel比read_csv复杂的地方就在于,read_excel支持非常多的参数。比如要实现读取后面的表格,我们只需要给read_excel函数的sheet_name参数赋值即可。
代码如下:
df_excel=pd.read_excel("info.xlsx",sheet_name="绩效")df_excel
输出如下:
可以看到,这次输出的就是我们增加的“绩效”表格中的内容。
简单来说,我们可以在read_excel中,通过给sheet_name赋值来决定要加载文件哪个表格,如果不指定,pandas则默认加载第一个表格。
(4)选择性读取excel文件的数据很多,全部加载到Python中可能会卡,而且有时候我们只对其中某几列感兴趣,全部加载显示也不容易看。read_excel提供了usecols参数,可以指定要加载哪几列。
举个例子,刚才的“绩效”表格,我们对上期考核结果不感兴趣,只想加载姓名和绩效考核这两列的内容。那我们可以这么做,新建Cell,输入如下代码。
df_excel=pd.read_excel("info.xlsx",sheet_name="绩效",usecols="A,B")df_excel
输出如下:
在上面的代码里,我们通过字母A和B指定了加载第一列和第二列。字母和列的对应关系其实就是Excel里面的对应关系。(具体大家可以看看excel文件中名称和绩效考核字段上面的字母)
4、使用pandas读取html文件有的时候数据并不是整理好的csv表格或者Excel表格,而是以网页中的表格的形式存在,最常见的就是各类股票财经网站,比如像同花顺的股票涨跌幅数据中心或者像招行银行的外汇行情页面:
如果我们希望将这些网页中的表格“导入”到Python进行处理,那自然也是可以的。根据我们上一个部分的爬虫技术,我们只需要将这个页面的html下载下来,然后用BeautifulSoup分析表格的标签结构,然后把内容一行一行的提取出来,再一步一步拆分成列。
做是可以做,但只听这个流程,只看这个复杂的页面,都让人觉得工作量很大。而对于提取网页中的表格,其实存在一个非常简单的方法:使用强大的pandas。
和read_csv、read_excel类似,pandas也提供了一个read_html的方法,来智能的提取网页中的所有表格,并以DataFrame列表的形式返回,一个表格对应一个DataFrame。看到这里,是否有感触到pandas的强大之处?
下面我们来通过Python的read_html方法来加载招商银行网页中的数据。
(1)准备网页首先要做的第一件事,就是要拿到网页的内容。在前面的文章中,我们已经写过了一个拿网页内容的函数。,直接复制过来,代码如下:
importurllibdefdownload_content(url):#创建一个PoolManager对象,命名为
转载请注明:http://www.meifashipin.net/jxwysl/11027.html