1. pandas读取excel文件指定行
用 pandas.read_table()读txt吧,速度提升很明显
2. pandas读取excel文件行数
采用分块整理的办法,使用pandas的分块读写,然后追加到一个新的文件
pd.read_table("a.txt",chunksize=记录行数
to_csv(”目标文件.txt",mode='a')
这个思路可不可以,因为不太明白你两个文件的同一行记录是否一一对应,可以考虑采用pandas的包。
3. pandas按行写入excel
在有关大数据分析Python API的本教程中,我们将学习如何从远程网站检索数据以进行数据科学项目。像baidu,Twitter和Facebook之类的网站都通过其应用程序编程接口(API)向程序员提供某些数据。要使用API,你需要向远程Web服务器发出请求,然后检索所需的数据。
但是,为什么要使用API而不是可以下载的静态数据集呢?API在以下情况下很有用:
a.数据变化很快。股票价格数据就是一个例子。重新生成数据集并每分钟下载一次并没有实际意义-这会占用大量带宽,而且速度很慢。
b.您需要一小部分更大的数据。Reddit评论就是一个例子。如果您只想在Reddit上发表自己的评论该怎么办?下载整个Reddit数据库,然后仅过滤您自己的注释并没有多大意义。
c.涉及重复计算。Spotify的API可以告诉您音乐的流派。从理论上讲,您可以创建自己的分类器,并使用它对音乐进行分类,但您将永远不会拥有Spotify所拥有的数据。
在上述情况下,API是正确的解决方案。对于本数据科学教程,我们将查询一个简单的API,以检索有关国际空间站(ISS)的数据。使用API可以节省我们自己进行所有计算的时间和精力。
大数据分析Python中的API请求
API托管在Web服务器上。当您www.google.com在浏览器的地址栏中键入内容时,您的计算机实际上是在向www.google.com服务器询问网页,然后该网页返回到您的浏览器。
API的工作方式几乎相同,除了您的程序要求数据而不是您的Web浏览器询问网页之外。这些数据通常以JSON格式返回(有关更多信息,请参阅有关使用JSON数据的教程)。
为了获取数据,我们向Web服务器发出请求。然后,服务器将回复我们的数据。在大数据分析Python中,我们将使用请求库来执行此操作。在此大数据分析Python API教程中,我们将为所有示例使用大数据分析Python 3.4。
请求类型
有许多不同类型的请求。最常用的一个GET请求用于检索数据。
我们可以使用一个简单的GET请求从OpenNotify API 检索信息。
OpenNotify具有多个API端点。端点是用于从API检索不同数据的服务器路由。例如,/commentsReddit API上的端点可能会检索有关注释的信息,而/users端点可能会检索有关用户的数据。要访问它们,您可以将端点添加到API 的基本URL中。
我们将在OpenNotify上看到的第一个端点是iss-now.json端点。该端点获取国际空间站的当前纬度和经度。如您所见,检索此数据不适用于数据集,因为它涉及服务器上的一些计算,并且变化很快。
您可以在此处查看OpenNotify上所有端点的列表。
OpenNotify API 的基本网址是http://api.open-notify.org,因此我们将其添加到所有端点的开头。
状态码
我们刚刚发出的请求的状态码为200。向Web服务器发出的每个请求都返回状态代码。状态代码指示有关请求发生的情况的信息。以下是与GET请求相关的一些代码:
a)200 -一切正常,结果已返回(如果有)
b)301—服务器正在将您重定向到其他端点。当公司切换域名或更改端点名称时,可能会发生这种情况。
c)401-服务器认为您未通过身份验证。当您没有发送正确的凭据来访问API时就会发生这种情况(我们将在以后的文章中讨论身份验证)。
d)400-服务器认为您提出了错误的请求。当您没有正确发送数据时,可能会发生这种情况。
e)403 —您尝试访问的资源被禁止—您没有正确的权限查看它。
f)404 -在服务器上找不到您尝试访问的资源。
现在http://api.open-notify.org/iss-pass,根据API文档,向不存在的端点发出GET请求。
击中正确的终点
iss-pass不是有效的端点,因此我们得到了一个404状态码作为相应。.json正如API文档所述,我们忘记在最后添加。
现在,我们将向发出GET请求http://api.open-notify.org/iss-pass.json。
查询参数
您将在上一个示例中看到,我们得到了一个400状态码,表示请求错误。如果您查看OpenNotify API的文档,我们会发现ISS Pass端点需要两个参数。
当ISS下次通过地球上的给定位置时,将返回ISS Pass端点。为了对此进行计算,我们需要将位置的坐标传递给API。为此,我们传递了两个参数-纬度和经度。
为此,我们可以在params请求中添加可选的关键字参数。在这种情况下,我们需要传递两个参数:
1)lat —我们想要的位置的纬度。
2)lon —我们想要的位置的经度。
我们可以使用这些参数制作字典,然后将它们传递给requests.get函数。
我们还可以通过将查询参数添加到url中来直接做同样的事情,如下所示:http://api.open-notify.org/iss-pass.json?lat=40.71&lon=-74。
将参数设置为字典几乎总是可取的,因为requests它可以处理一些事情,例如正确设置查询参数的格式。
我们将使用纽约市的坐标进行请求,然后查看得到的答复。
b'{n "message": "success", n "request": {n "altitude": 100, n "datetime": 1441417753, n "latitude": 40.71, n "longitude": -74.0, n "passes": 5n }, n "response": [n {n "duration": 330, n "risetime": 1441445639n }, n {n "duration": 629, n "risetime": 1441451226n }, n {n "duration": 606, n "risetime": 1441457027n }, n {n "duration": 542, n "risetime": 1441462894n }, n {n "duration": 565, n "risetime": 1441468731n }n ]n}'
b'{n "message": "success", n "request": {n "altitude": 100, n "datetime": 1441417753, n "latitude": 40.71, n "longitude": -74.0, n "passes": 5n }, n "response": [n {n "duration": 329, n "risetime": 1441445639n }, n {n "duration": 629, n "risetime": 1441451226n }, n {n "duration": 606, n "risetime": 1441457027n }, n {n "duration": 542, n "risetime": 1441462894n }, n {n "duration": 565, n "risetime": 1441468731n }n ]n}'
使用JSON数据
您可能已经注意到,响应的内容之前是a string(尽管它显示为bytes对象,但是我们可以使用轻松地将内容转换为字符串response.content.decode("utf-8"))。
字符串是我们将信息来回传递给API的方式,但是很难从字符串中获取我们想要的信息。我们如何知道如何解码返回的字符串并在大数据分析Python中使用它?我们如何altitude从字符串响应中找出ISS的含义?
幸运的是,有一种名为JavaScript Object Notation(JSON)的格式。JSON是一种将列表和字典之类的数据结构编码为字符串的方法,以确保它们易于被机器读取。JSON是将数据来回传递给API的主要格式,大多数API服务器将以JSON格式发送其响应。
json套件随附大数据分析Python强大的JSON支持。该json软件包是标准库的一部分,因此我们无需安装任何程序即可使用它。我们既可以将列表和字典转换为JSON,也可以将字符串转换为列表和字典。就我们的ISS Pass数据而言,它是一个字典,编码为JSON格式的字符串。
json库有两种主要方法:
1)dumps —接收一个大数据分析Python对象,并将其转换为字符串。
2)loads —接收JSON字符串,并将其转换为大数据分析Python对象。
从API请求获取JSON
通过使用.json()响应上的方法,您可以将响应的内容作为大数据分析Python对象获取。
{'response': [{'risetime': 1441456672, 'duration': 369}, {'risetime': 1441462284, 'duration': 626}, {'risetime': 1441468104, 'duration': 581}, {'risetime': 1441474000, 'duration': 482}, {'risetime': 1441479853, 'duration': 509}], 'message': 'success', 'request': {'latitude': 37.78, 'passes': 5, 'longitude': -122.41, 'altitude': 100, 'datetime': 1441417753}}
内容类型
服务器不仅会在生成响应时发送状态码和数据。它还发送包含有关如何生成数据以及如何对其进行解码的信息的元数据。这存储在响应头中。在大数据分析Python中,我们可以使用headers响应对象的属性来访问它。
标头将显示为字典。在标题中,content-type是目前最重要的键。它告诉我们响应的格式以及如何对其进行解码。大数据分析Python API入门教程https://www.aaa-cg.com.cn/data/2308.html对于OpenNotify API,格式为JSON,这就是为什么我们可以json更早地使用包对其进行解码的原因。
寻找太空中的人数
OpenNotify还有一个API端点astros.json。它告诉你当前有多少人在太空中。相应的格式可以在这里找到。
9
{'number': 9, 'people': [{'name': 'Gennady Padalka', 'craft': 'ISS'}, {'name': 'Mikhail Kornienko', 'craft': 'ISS'}, {'name': 'Scott Kelly', 'craft': 'ISS'}, {'name': 'Oleg Kononenko', 'craft': 'ISS'}, {'name': 'Kimiya Yui', 'craft': 'ISS'}, {'name': 'Kjell Lindgren', 'craft': 'ISS'}, {'name': 'Sergey Volkov', 'craft': 'ISS'}, {'name': 'Andreas Mogensen', 'craft': 'ISS'}, {'name': 'Aidyn Aimbetov', 'craft': 'ISS'}], 'message': 'success'}
大数据分析Python API数据科学教程:后续步骤
现在,您已经完成了大数据分析Python API教程,现在应该可以访问简单的API并发出get请求了。requests在我们的dataquest API和抓取课程中,还有其他几种类型,您可以了解更多信息以及与API身份验证一起使用。
建议的其他后续步骤是阅读请求文档,并使用Reddit API。有一个名为PRAW 的程序包,它使在大数据分析Python中使用Reddit API更加容易,但是建议requests首先使用它来了解一切的工作原理。
https://www.toutiao.com/i6832146415016215043/
4. pandas写入excel指定单元格
pandas与xlwings的区别
先说下xlwings与pandas的简单区别:pandas是对结构化数据的分析挖掘。要求数据非常规整。比如第一列单元格填什么字段,第二列填什么字段都很清楚。一般为二维数据。pandas读取excel会破坏excel的格式。比如说数据透视表,合并单。
5. pandas读取excel指定行列
Python批量读取特定文件夹下Excel的话,主要分为2步,首先根据后缀名(xls或xlsx)匹配出所有Excel文件,然后直接利用相关模块(pandas,openpyxl等)读取即可,下面我简单介绍一下实现过程,感兴趣的朋友可以尝试一下:
01
查找所有Excel文件
这一步非常简单,主要是根据后缀名匹配所有Excel文件,基本思路先使用os.walk函数遍历指定的文件夹,找到所有文件,然后一一匹配文件后缀名,如果是xls或xlsx,则为Excel文件,添加到list列表,之后返回,后面读取函数就是根据这个列表(存储所有搜索到的Excel文件路径)读取Excel文件:
02
读取Excel文件内容
这一步主要你是根据上一步找到的Excel文件路径直接读取Excel文件,至于读取模块或库的话,那就非常多啦,基本的xlrd,xlutils,openpyxl都行,最简单的方式就是使用pandas,一个著名的数据处理库,内置了大量函数和类型,可以轻松处理Excel等日常各种文件,安装的话,直接在cmd窗口输入命令“pip install pandas”即可:
安装完成后,我们就可以直接使用pandas库读取Excel文件了,非常简单,只需要一行代码即可搞定,也就是read_excel函数,传入Excel文件路径就行,默认情况下会读取列标题,如果你不需要列标题的话,设置header=None即可,读取的数据类型为DataFrame,后续处理的话,也非常方便:
至此,我们就完成了利用Python批量读取特定文件夹下Excel。总的来说,整个过程非常简单,就是根据后缀名匹配查找,然后直接读取即可,只要你有一定Python基础,熟悉一下上面的代码和示例,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
6. pandas读取指定行
按列取、按索引/行取、按特定行列取
import numpy as np
from pandas import DataFrame
import pandas as pd
df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd'))
df['a']#取a列
df[['a','b']]#取a、b列
#ix可以用数字索引,也可以用index和column索引
df.ix[0]#取第0行
df.ix[0:1]#取第0行
df.ix['one':'two']#取one、two行
df.ix[0:2,0]#取第0、1行,第0列
df.ix[0:1,'a']#取第0行,a列
df.ix[0:2,'a':'c']#取第0、1行,abc列
df.ix['one':'two','a':'c']#取one、two行,abc列
df.ix[0:2,0:1]#取第0、1行,第0列
df.ix[0:2,0:2]#取第0、1行,第0、1列
#loc只能通过index和columns来取,不能用数字
df.loc['one','a']#one行,a列
df.loc['one':'two','a']#one到two行,a列
df.loc['one':'two','a':'c']#one到two行,a到c列
df.loc['one':'two',['a','c']]#one到two行,ac列
#iloc只能用数字索引,不能用索引名
df.iloc[0:2]#前2行
df.iloc[0]#第0行
df.iloc[0:2,0:2]#0、1行,0、1列
df.iloc[[0,2],[1,2,3]]#第0、2行,1、2、3列
#iat取某个单值,只能数字索引
df.iat[1,1]#第1行,1列
#at取某个单值,只能index和columns索引
df.at['one','a']#one行,a列
2.按条件取行
选取等于某些值的行记录 用 ==
df.loc[df[‘column_name’] == some_value]
选取某列是否是某一类型的数值 用 isin
df.loc[df[‘column_name’].isin(some_values)]
多种条件的选取 用 &
df.loc[(df[‘column’] == some_value) & df[‘other_column’].isin(some_values)]
选取不等于某些值的行记录 用 !=
df.loc[df[‘column_name’] != some_value]
isin返回一系列的数值,如果要选择不符合这个条件的数值使用~
df.loc[~df[‘column_name’].isin(some_values)]
7. pandas读取excel文件某一行
答方法如下
1
打开电脑,在桌面鼠标右键选择新建excel工作表;接着打开工作表,在sheet1插入一个表格
2
然后在excel表格sheet2,插入另一个表格数据
3
双击打开pycharm工具,新建python文件,导入pandas包;调用read_excel()方法读取excel文件数据
4
/6
保存代码并运行python文件,结果出现了报错,缺少xlrd包
5
点击File菜单,选择Settings,找到项目对应的Project Interpreter,安装xlrd
6
安装完毕后,再次运行代码,可以查看到控制台打印出excel文件数据
8. 怎么用python的pandas读取excel文件
pandas读取、写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量、变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件。
pandas可以写入一个或者工作簿,两种方法介绍如下:
1、如果是将整个DafaFrame写入excel,则调用to_excel()方法即可实现,示例代码如下:
# output为要保存的Dataframe
output.to_excel(‘保存路径 + 文件名.xlsx‘)
2、有多个数据需要写入多个excel的工作簿,这时需要调用通过ExcelWriter()方法打开一个已经存在的excel表格作为writer,然后通过to_excel()方法将需要保存的数据逐个写入excel,最后关闭writer。
示例代码如下:
# 创建一个空的excel文件
nan_excle = pd.DataFrame()
nan_excel.to_excel(path + filename)
# 打开excel
writer = pd.ExcelWriter(path + filename)
#sheets是要写入的excel工作簿名称列表
for sheet in sheets:
output.to_excel(writer, sheet_name=sheet)
# 保存writer中的数据至excel
# 如果省略该语句,则数据不会写入到上边创建的excel文件中
writer.save()
9. pandas逐行读取excel
\r\n 要不你就别合成一个大字符串了,循环里读一个写一下呗,每写一次会换行
- 相关评论
- 我要评论
-