L: módulo Pandas de Python: leer / escribir archivos CSV, leer / escribir archivos HDF5, obtener datos de stock

Archivo de datos de lectura / escritura

Leer / escribir archivo CSV

Los archivos CSV son archivos de texto separados por comas, que a menudo se utilizan como archivos intermedios para el intercambio de datos entre software. Pandas proporciona dos métodos, read_csv () y to_csv () para leer / escribir archivos CSV.
Suponiendo que hay un archivo mobile.csv, el contenido es el siguiente:,
apple, huawei, oppo
enero, 1100,1250,800
febrero, 1050,1300,850
marzo, 1200,1328,750

df=pd.read_csv("mobile.csv", encoding='cp936', index_col=0) # 读文件
文件mobile.csv中含有中文,当初保存时选了GBK(cp936)编码字符集,
所以读取时也应指定该编码集。如不指定,Pandas默认将按utf-8编码读取,
就会产生如下的'utf-8'解析错误。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position 2: invalid continuation byte

index_col=0 指定将文件的第0列作为索引标签。mobile.csv文件的第0行会被自动解析为列名。
数据文件m2.csv的内容如下。该文件只含数据,不含列名和标签,读取时可用names参数自行指定列名。
1100,1250,800
1050,1300,850
1200,1328,750
# 注:该文件不含中文,只有数字,所以可不指定encoding
df2 = pd.read_csv("m2.csv", names=['apple', 'huawei', 'oppo'])
# 也可以第一步:先读取;  
df3 = pd.read_csv("m2.csv", header=None)
# 第二步:再修改columns和index
df3.columns = ['apple', 'huawei', 'oppo']
df3.index = ['一月', '二月', '三月']

header=None表示文件不含列名。若不指定这个参数,则文件第0行“1100,1250,800”将被错误解析为列名。

Algunos archivos no están separados por comas, sino por espacios. El contenido del archivo m4.txt es el siguiente:
1100 1250800
1050 1300 850
1200 1328750

df4 = pd.read_csv("m4.txt", sep="\s+", header=None)

m4.txt文件各个数据用数量不等的空格或制表键分隔,所以指定sep="\s+"参数。"\s+"是正则表达式,表示分隔符可为若干空白字符。

# 跳过前2行
pd.read_csv("score.txt", skiprows=2, sep='\s+', encoding='cp936' )        pd.read_csv("数据文件名", skiprows=[0, 2])    	# 跳过第0, 2行
pd.read_csv("数据文件名", skipfooter=2, engine = 'python') # 跳过尾部的2行
pd.read_csv("数据文件名", nrows=10)         	# 只读取前10行数据

Si el archivo contiene datos de fecha, puede usar el parámetro parse_dates para especificar el análisis por fecha. El contenido de stock.txt es el siguiente: el
volumen de cierre más alto y más bajo en la apertura del día de negociación
2019/03/22 18.09 18.63 18.02 18.15 43760812
2019/03/23 18.16 18.35 18.06 18.13 27830796
2019/03/24 18.11 18.11 17.68 17.72 27448272

df = pd.read_csv('stock.txt', parse_dates=['交易日'], 	encoding='cp936', sep='\s+', index_col='交易日')
解析后的 df.index 是日期类,便于以后按日期段查询统计。
df.index    # 显示索引为日期类 dtype=datetime64[ns]

El objeto de marco de datos tiene el método to_csv (), que puede guardar los datos en un archivo CSV.

df.to_csv("d1.csv", encoding='cp936')           	# 存盘,默认逗号分隔
df.to_csv("d2.txt", encoding='cp936', sep=' ') # 指定用空格分隔

Pandas proporciona dos métodos read_excel () y to_excel () para leer / escribir hojas de cálculo.
# Lee la primera hoja de trabajo por defecto, la fila 1 como el nombre de la columna, la columna A (columna 0) como la etiqueta

df1 = pd.read_excel("mobile.xlsx", index_col=0)    # 读Excel文件

# sheet_name指定读工作簿中的某个工作表
df2 = pd.read_excel("mobile.xlsx", sheet_name='二季度')

将数据框保存到Excel文件中时,使用to_excel()方法。
df1.to_excel("a1.xlsx")               # 存入Excel文件

可以将多个数据框保存到一个 Excel文件的不同工作表中。
如下语句执行后,df1和df2的数据分别保存在test.xlsx内名为"一季度""二季度"的工作表中。
from  pandas  import  ExcelWriter
with  ExcelWriter("test.xlsx")  as  writer:
    df1.to_excel(writer, sheet_name='一季度')
    df2.to_excel(writer, sheet_name='二季度')

Leer / escribir archivos HDF5

HDF (Hierarchical Data Format) es un formato de archivo que se utiliza para almacenar y organizar grandes cantidades de datos.

#若store.h5文件不存在,则先创建;若已存在,则打开此文件
store = pd.HDFStore('store.h5')   
store['dfa'] = df1 		# 将df1保存到文件中,键名dfa
store['dfb'] = df2 		# 将df2保存到文件中,键名dfb
store.close() 		# 关闭文件

读出已保存的数据可以使用下面的命令。
store = pd.HDFStore('store.h5')  	# 打开文件   
df3 = store['dfa']               	# 根据dfa键名取出数据
df4 = store['dfb']               	# 根据dfb键名取出数据

从上面示例可以看出,HDF文件存取数据的方式类似于字典操作,都通过键存取数据。

Obtenga datos de acciones (usando Yahoo Finance y tushare)

命令行上先安装   conda  install   pandas-datareader
# 雅虎财经(慢/易出错)
import pandas_datareader.data as web
# 上市后缀.ss,  深市后缀.sz,  获取 'High', 'Low', 'Open', 'Close', 'Volume'
d1= web.get_data_yahoo('600030.ss', start = '2020-02-01', end = '2020-02-29')
d2= web.get_data_yahoo('002522.sz', start = '2020-02-01', end = '2020-02-29')
d3= web.get_data_yahoo('BA', start = '2020-02-01', end = '2020-03-29')
d4= web.get_data_yahoo(['MSFT','AAPL'], start = '2020-02-01', end = '2020-02-29')

命令行上先安装  pip  install  tushare
import tushare as ts    # 快速
hs300 = ts.get_k_data('hs300',start ='2020-01-01', end = '2020-02-29')
k2522 = ts.get_k_data('002522',start ='2020-01-01', end = '2020-02-29')

Supongo que te gusta

Origin blog.csdn.net/qq_43416157/article/details/106878987
Recomendado
Clasificación