python股票数据处理(python导入股票数据)

前面我们讲了如何从东方财富网站获取所有股票数据,那么我们如何筛选和分析股票呢?这需要保存库存数据。今天我们就来看看如何将这些数据保存到Excel中。

目前Excel中常用的格式有xls和xlsx。小编推荐以xlsx格式保存数据,也推荐使用openpyxl。

python股票数据处理(python导入股票数据)

首先,创建一个Excel并添加标题行,如下所示。

然后,将之前获得的数据保存到Excel中。代码如下:

importrequestsfromopenpyxlimportload_workbook#打开Excelwb=load_workbook('./stock.xlsx',read_only=False)#打开工作表ws=wb.activea=2#从第2行开始插入数据#获取股票数据url=''foriinrange(1,10):data={'fields':'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152','pz':,#每页number'pn':i,#页码'fs':'m:0t:6,m:0t:80,m:1t:2,m:1t:23,m:0t:81s:'}响应=requests.get(url,数据)response_json=response.json()ifresponse_json['data']isNone:#当返回数据为空时停止循环breakforj,kinresponse_json['data']['diff'].items():code=k['f12']#代码name=k['f14']#名称price=k['f2']#股价pe=k['f9']#动态市盈率pb=k['f23']#市净率total_value=k['f20']#总市值currency_value=k['f21']#流通市值price=round(price/100,2)#价格转换为正确值pe=round(pe/100,2)#将市盈率转换为正确值pb=round(pb/100,2)#将市净率转换为正确值(保留2位小数)total_value=round(total_value/,2)#将总市值折算为1亿元currency_value=round(currency_value/,2)#将流通市值折算为1亿元元print('代码:%s,名称:%s,当前价格:%s,动态市盈率:%s,市净率:%s,总市值:%s亿,流通市值:%s亿'%(code,name,price,pe,pb,total_value,currency_value))#将数据写入Excelws.cell(行=a,列=1).value=代码ws.cell(行=a,列=2).value=名称ws.cell(行=a,列=3).value=价格ws.cell(行=a,列=4).value=pews.cell(行=a,列=5).value=pbws.cell(行=a,列=6).value=总值ws.cell(行=a,column=7).value=currency_valuea=1#保存wb.save('./stock.xlsx')

结果如下图:

#财经##股票##股市分析##Ashare##stockfinance#

如何使用python将大量数据导出到Excel中的小技巧

如何使用python导出大量数据到Excel的技巧

问题描述:为了更好的展示数据,Excel格式的数据文件往往比文本文件更有优势,但是具体在python中,如何将数据导出到Excel呢?如果需要导出大量数据怎么办?本文主要解决以上两个问题。

(2)具体步骤如下:

1.第一步安装openpyxl,

就用pipinstallopenpyxl即可,不过windows下安装的版本是2.2.6版本,但是centos自动安装4.1版本。

我写的代码在Windows下跑得好好的,但是在CentOS上就报错,说ew=ExcelWriter(workbook=wb)少了一个参数,所以我果断在237服务器上安装了2.2.6版本,问题就解决了。

pip安装openpyxl==2.2.6

2.第二步,哈哈,不,不废话了,直接上代码,ps,代码中包含了xlwt和openpyxl的两个实现版本。

延伸阅读:查阅资料后,发现网上有不同的说法。概括起来有以下几点:

pythonExcel相关操作有两组模块库,一组是xlrd、xlwt、xlutils,一组是openpyxl。

不过前一组比较老,只能处理Excel97-或Excel97之前版本生成的xls格式的excel文件。xlwt甚至不支持07版本之后的excel。一般来说,Excel中的excel文件这种格式,只能支持最大256列或行的excel文件。

因此,当面临需要将大量数据导出到excel时,你会有以下三种选择:更改为存储格式,例如另存为CSV文件使用openpyxl——,因为它支持Excel+xlsx/xlsm格式的处理(3)win32COM(仅限Windows)

当然,我们必须直面困难。为了更好地向产品和用户展示数据,我们仍然选择第二种方案。

ps,非常幸运。经过一番搜索,我找到了openpyxl,它支持Excel07+。一直有人在维护。这些文件清晰易读。您可以参考教程和API文档快速上手。就是这个啦~

废话不多说,直接上代码。请参考一下。

#编码:utf-8

#希望对大家有帮助,有问题请多多提问

创建者:yaoyz

日期:/01/24

导入xlrd

导入xlwt

#工作簿相关

从openpyxl.workbook导入工作簿

#ExcelWriter,封装了非常强大的excel写入功能

从openpyxl.writer.excel导入ExcelWriter

#如何将蛋疼数字转换为列字母

从openpyxl.utils导入get_column_letter

从openpyxl.reader.excel导入load_workbook

类HandleExcel():

Excel相关操作类

def__init__(self):

自己。head_row_labels=[u学生学号,u学生姓名,u联系方式,u知识点ID,u知识点名称]

'''

功能:

读取txt文件中的每条记录并保存到列表中

参数:

filename:需要读取的文件名

返回:

res_list:返回的记录列表

'''

defread_from_file(自身,文件名):

res_list=[]

file_obj=打开(文件名,'r')

对于file_obj.readlines():中的行

res_list.append(行)

file_obj.close()

返回res_list

'''

功能:

读取*.xlsx中的每条记录,保存到data_dic中并返回

参数:

excel_name:需要读出的文件名

返回:

data_dic:返回记录的字典

'''

defread_excel_with_openpyxl(self,excel_name='testexcel.xlsx'):

#读取excel文件

wb=load_workbook(文件名=excel_name)

#显示有多少张表

print'工作表范围:',wb.get_named_ranges()

print'工作表名称:',wb.get_sheet_names()

#获取第一个表

工作表名称=wb.get_sheet_names()

ws=wb.get_sheet_by_name(sheetnames[0])

#显示表名、表行数、表列数

打印'工作表Titile:',ws.title

print'工作表行数:',ws.get_highest_row()

print'工作表Cols:',ws.get_highest_column()

#获取读取的excel表格中有多少行和列

row_num=ws.get_highest_row()

col_num=ws.get_highest_column()

打印'row_num:',row_num,'col_num:',col_num

#创建字典来存储数据

数据_dic={}

符号=1

#将数据保存到字典中

对于ws.rows:中的行

临时列表=[]

#打印'行',行

对于row:中的单元格

打印单元格值,

temp_list.append(cell.value)

打印''

data_dic[符号]=temp_list

符号+=1

打印数据_dic

返回数据_dic

'''

功能:

读取*.xlsx中的每条记录,保存到data_dic中并返回

参数:

Records:保存包含每条记录的列表

save_excel_name:文件名另存为

head_row_stu_arrive_star:

返回:

data_dic:返回记录的字典

'''

defwrite_to_excel_with_openpyxl(self,记录,head_row,save_excel_name='save.xlsx'):

#创建一个新工作簿

wb=工作簿()

#创建一个新的excelWriter

ew=ExcelWriter(工作簿=wb)

#设置文件输出路径和名称

dest_filename=save_excel_name.decode(utf-8)

#第一张表是ws

ws=wb.工作表[0]

#设置ws的名称

ws.title='范围名称'

#写第一行,标题行

对于范围内的h_x(1,len(head_row)+1):

h_col=get_column_letter(h_x)

#打印h_col

ws.cell(%s%s%(h_col,1)).value=%s%(head_row[h_x-1])

#写入第二行及以下各行

我=2

记录在案:

record_list=str(record).strip().split('t')

对于范围内的x(1,len(record_list)+1):

列=get_column_letter(x)

ws.cell(%s%s%(col,i)).value=%s%(record_list[x-1].decode(utf-8))

我+=1

#写入文件

ew.save

'''

功能:

测试输出Excel内容

读取Excel文件

参数:

excel_name:要读出的Excel文件名

返回:

没有任何

'''

defread_excel(self,excel_name):

工作簿=xlrd.open_workbook(excel_name)

打印工作簿.sheet_names()

#获取所有工作表

printworkbook.sheet_names()#[usheet1,usheet2]

sheet2_name=workbook.sheet_names()[1]

#根据sheet索引或名称获取sheet内容

sheet2=workbook.sheet_by_index(1)#sheet索引从0开始

Sheet2=工作簿.sheet_by_name(Sheet1)

#sheet的名称、行数、列数

打印sheet2.name,sheet2.nrows,sheet2.ncols

#获取整行整列的值

rows=sheet2.row_values(3)#获取第四行的内容

cols=sheet2.col_values(2)#获取第三列的内容

打印行

打印列

#获取单元格内容

打印sheet2.cell(1,0).value

打印sheet2.cell_value(1,0)

打印sheet2.row(1)[0].value

#获取单元格内容的数据类型

打印sheet2.cell(1,0).ctype

#根据名字获取

返回工作簿.sheet_by_name(uSheet1)

'''

功能:

设置单元格样式

参数:

name:字体名称

height:字体高度

bold:是否大写

返回:

style:返回设置的格式对象

'''

defset_style(自我,名称,高度,粗体=False):

style=xlwt.XFStyle()#初始化样式

font=xlwt.Font()#创建样式字体

font.name=name#TimesNewRoman字体

字体.bold=粗体

字体颜色索引=4

字体高度=高度

边框=xlwt.Borders()

边框.左=6

边框.右=6

边框.顶部=6

边框.底部=6

样式.字体=字体

style.borders=边框

返回样式

'''

功能:

按照步骤设置单元格样式,并将计算结果从txt转换为Excel保存。

参数:

dataset:要保存的结果数据,列表存储

返回:

将结果保存为Excel对象

'''

defwrite_to_excel(自身,数据集,save_excel_name,head_row):

f=xlwt.Workbook()#创建工作簿

#创建第一张sheet:

#表1

计数=1

sheet1=f.add_sheet(usheet1,cell_overwrite_ok=True)#创建工作表

#第一行标题:

对于范围内的p(len(head_row)):

sheet1.write(0,p,head_row[p],self.set_style(TimesNewRoman,250,True))

default=self.set_style(TimesNewRoman,200,False)#定义循环外的样式将起作用

对于dataset:中的行

row_list=str(line).strip('n').split('t')

对于范围内的pp(len(str(line).strip('n').split('t'))):

sheet1.write(count,pp,row_list[pp].decode(utf-8),默认)

计数+=1

f.save(save_excel_name)#保存文件

defrun_main_save_to_excel_with_openpyxl(self):

print'测试读写年及以后的excel文件xlsx,以方便向文件写入更多数据'

打印'1。将txt文件读入内存并将其存储为列表对象'

dataset_list=self.read_from_file('test_excel.txt')

测试使用openpyxl处理EXCEL

打印'2.将文件写入Excel表格'

head_row_label=self.head_row_labels

save_name='test_openpyxl.xlsx'

self.write_to_excel_with_openpyxl(数据集列表,head_row_label,save_name)

打印'3.执行后,将txt格式文件另存为Excel文件'

defrun_main_save_to_excel_with_xlwt(self):

打印'4。将txt文件读入内存并将其存储为列表对象'

dataset_list=self.read_from_file('test_excel.txt')

测试使用xlwt处理EXCEL97-

打印'5。将文件写入Excel表'

head_row_label=self.head_row_labels

save_name='test_xlwt.xls'

self.write_to_excel_with_openpyxl(数据集列表,head_row_label,save_name)

打印'6。执行后,将txt格式文件另存为Excel文件'

如果__name__==__main__:

print'创建句柄Excel对象'

obj_handle_excel=HandleExcel()

#使用openpyxl和xlwt分别向文件写入数据

obj_handle_excel.run_main_save_to_excel_with_openpyxl()

obj_handle_excel.run_main_save_to_excel_with_xlwt()

测试读取的文件。注意openpyxl无法读取xls文件,xlrd无法读取xlsx格式的文件。

#obj_handle_excel.read_excel_with_openpyxl('testexcel.xls')#写法错误

#obj_handle_excel.read_excel_with_openpyxl('testexcel.xls')#写法错误

obj_handle_excel.read_excel('testexcel.xls')

obj_handle_excel.read_excel_with_openpyxl('testexcel.xlsx')

python怎么把数据写入到excel

Python中,xlrd一般用于读取Excel文件,xlwt用于生成Excel文件。需要注意的是,使用xlrd读取excel是无法进行操作的:xlrd.open_workbook()方法返回的是xlrd.Book类型,该类型是只读的,无法进行操作。xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。

因此,读取和生成Excel文件非常容易,但修改现有的Excel文件就比较麻烦了。不过,还有xlutils提供了复制excel文件内容和修改文件的功能。事实上,它只是在xlrd.Book和xlwt.Workbook之间建立了一条管道。

xlutils.copy模块的copy()方法实现了此功能。示例代码如下:

从xlrd导入open_workbookfromxlutils.copy导入副本

rb=open_workbook(m:\\1.xls)

#通过sheet_by_index()得到的sheet没有write()方法rs=rb.sheet_by_index(0)

wb=复制(rb)

#通过get_sheet()获得的sheet有write()方法ws=wb.get_sheet(0)

ws.write(0,0,改变了!)

wb.保存(m:\\1.xls)

练习代码:

特别说明:由于复制保存本质上是通过xlwt保存的,所以文件实际上是通过xlwt保存的。

但是通过xlwt只能写入xls文件,而不能写入xlsx文件。

导入xlrdfromxlwt导入*fromxlutils.copy导入副本

xlsfile=test.xlsbook=xlrd.open_workbook(xlsfile)

sheet_name=book.sheet_names()print(sheet_name)

工作表=book.sheet_by_index(1)

nrows=工作表.nrows

ncols=sheet.ncolsprint(nrows)print(ncols)

行数据=sheet.row_values(0)

col_data=sheet.col_values(0)打印(row_data)打印(col_data)

单元格值=sheet.单元格值(3,0)打印(单元格值)

单元格值2=sheet.cell(3,0)print(单元格值2)

sheet.put_cell(1,2,1,'测试',0)

cell_value2=Sheet.cell(1,1)print(cell_value2)#保存xlsfilewb=copy(book)

wb.保存

上一篇: 周五港股为什么大跌原因(周五港股为什么大跌了)
下一篇: 平安920钻石值多少钱(平安920是什么意思)

相关资讯