四、numpy的通用函数 1、2、 读取和保存文件

四、numpy的通用函数
1.读取文本文件
numpy.loadtxt(
文件名(可以使绝对路径也可以是相对路径),
delimiter=分隔符,
usecols=选择列,
unpack=是否解包,(false\True)
dtype=目标类型,
converters=转换器)->二维数组(unpack=False)/
列一维数组集(unpack=True)

注意:Converters={},其中字典的键为哪一列,值为预处理函数

2.保存文本文件
numpy.savetxt(
文件名,
二维数组,
delimiter=分隔符,
fmt=格式)

# 对特定文件的简单读取
import numpy as np
a = np.arange(1, 10).reshape(3, 3)
print(a)
np.savetxt('F:/python/python_work/学习/test.csv', a, delimiter=',',
           fmt='%d')
# 读取文件
# 默认为浮点类型
# 解包两列(或n列),可以用2个(n个)变量,也可以单独设置类型
d, e = np.loadtxt('F:/python/python_work/学习/test.csv', delimiter=',',
               usecols=(0, 2), unpack=True, dtype='i4, f8')
print(d, e)

。。。。。。。。
读取文件,并绘图

import datetime as dt
import numpy as np
import matplotlib.pyplot as mp
import matplotlib.dates as md

# 由于此处时间格式顺序不对,所以需要预转换
def dmy2ymd(dmy):
    dmy = str(dmy, encoding='utf-8')  # 目的是将原始对象(utf-8)的变成Unicode字符串
    date = dt.datetime.strptime(dmy, '%d-%m-%Y').date()  # 该函数能从字符串中解析日期
    ymd = date.strftime('%Y-%m-%d')  # 把时间或日期格式化成串
    return ymd

# 采用分列读取的方式
# 数据中的日期需要处理才能读取: M8[D] numpy中的时间类型,[D]表示精度,此处为day
dates, opening_prices, highest_prices,\
    lowest_prices, closing_prices = np.loadtxt(
    'F:/python/python_work/学习/aapl.csv', delimiter=',',
    usecols=(1, 3, 4, 5, 6), unpack=True,
    dtype='M8[D], f8, f8, f8, f8',
    converters={1: dmy2ymd})
print(opening_prices)

# 画k线图
mp.figure('Candlestick', facecolor='lightgray')
mp.title('Candlestick', fontsize=20)
mp.xlabel('Date', fontsize=14)
mp.ylabel('Price', fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(
    md.WeekdayLocator(byweekday=md.MO))
ax.xaxis.set_minor_locator(
    md.DayLocator())
ax.xaxis.set_major_formatter(
    md.DateFormatter('%d %b %Y'))
# 设置标签所用字体
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')

# 需要将numpy的日期类型转换为matplotlib的类型
dates = dates.astype(md.datetime.datetime)

# 确定阳线、阴线
rise = closing_prices - opening_prices >= 0.01  # bool型数组 元素个数不变但是元素有真有假
fall = opening_prices - closing_prices >= 0.01

# 注意此处dates.size的用法
fc = np.zeros(dates.size, dtype='3f4')  # 填充色
ec = np.zeros(dates.size, dtype='3f4')  # 边框色

# 绘制颜色
fc[rise] = (1, 1, 1)  # fc[size]:只有该数组为真的元素有用;并将其赋值为1,1,1
fc[fall] = (0, 0.5, 0)  # 下降数组为绿色
ec[rise], ec[fall] = (1, 0, 0), (0, 0.5, 0)

mp.bar(dates, highest_prices - lowest_prices, 0,
       lowest_prices, color=fc, edgecolor=ec)
mp.bar(dates, closing_prices - opening_prices, 0.8,
       opening_prices, color=fc, edgecolor=ec)
mp.gcf().autofmt_xdate()
mp.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值