博客
关于我
python读取文本文件数据
阅读量:798 次
发布时间:2023-03-06

本文共 3690 字,大约阅读时间需要 12 分钟。

读取CSV文件并进行数据分析与可视化

当我们需要处理结构化数据时,CSV文件是最常用的文件格式之一。以下将详细说明如何使用Python读取CSV文件并对数据进行分析与可视化操作。

1. CSV 文件结构

CSV文件的内容通常采用一行一记录的方式,各个字段之间用特定的分隔符(如逗号、空格)分隔。例如,以下是常见的CSV文件格式:

10,张三,22,男,172,57,95
11,李四,25,男,180,65,90
12,王红,23,女,160,50,99

从上述数据可以看出:

  • 一行代表一个样本
  • 一列代表一个特征
  • 各字段之间使用固定分隔符(如逗号、空格)分隔

2. 读取 CSV 文件

在Python中,numpy.loadtxt() 是一个强大的工具,可以直接读取CSV文件并将其转换为二维数组。以下是该函数的基本用法:

import numpy as np
# 读取 CSV 文件
# 例如:aapl.csv 是一个包含股票数据的 CSV 文件
# 逗号分隔值为默认分隔符
# usecols 参数指定要读取的列索引
# unpack=True 将多列数据转换为独立的数组
# dtype 参数指定数据类型(缺省为浮点数)
# converters 参数用于自定义字段转换函数
# 读取特定列的数据
dates, open_prices, high_prices, low_prices, close_prices = np.loadtxt(
'./aapl.csv',
delimiter=',',
usecols=(1, 3, 4, 5, 6),
unpack=True,
dtype=np.dtype('M8[D], f8, f8, f8, f8'),
converters={1: dmy2ymd}
)

3. 数据字段转换

在读取数据的同时,我们可以对特定字段进行自定义转换。例如,使用 dmy2ymd 函数将日期格式从 dd-mm-yyyy 转换为 yyyy-mm-dd 格式:

def dmy2ymd(dmy):
dmy = str(dmy, encoding='utf-8')
date = datetime.datetime.strptime(dmy, '%d-%m-%Y').date()
ymd = date.strftime('%Y-%m-%d')
return ymd

4. 数据展示与可视化

读取完成后,可以将数据进行展示。以下是一个简单的示例,使用 matplotlib 绘制股价走势图:

import matplotlib.pyplot as mp
import matplotlib.dates as md
# 创建图表
mp.figure('Candlestick', facecolor='lightgray')
mp.title('Candlestick', fontsize=20)
mp.xlabel('Date', fontsize=14)
mp.ylabel('Price', fontsize=14)
# 设置 x 轴格式
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=':')
# 读取日期数组
dates = dates.astype(md.datetime.datetime)
# 计算涨跌数据
rise = (close_prices - open_prices) >= 0.01
fall = (open_prices - close_prices) >= 0.01
# 初始化颜色数组
fc = np.zeros(dates.size, dtype='3f4')
ec = np.zeros(dates.size, dtype='3f4')
# 给涨跌数据赋予颜色
fc[rise], fc[fall] = (1, 1, 1), (0, 0.5, 0)
ec[rise], ec[fall] = (1, 0, 0), (0, 0.5, 0)
# 绘制蜡烛图
mp.bar(dates, high_prices - low_prices, 0,
low_prices, color=fc, edgecolor=ec)
mp.bar(dates, close_prices - open_prices, 0.8,
open_prices, color=fc, edgecolor=ec)
# 自动调整 x 轴格式
mp.gcf().autofmt_xdate()
mp.show()

5. 完整代码示例

import numpy as np
import datetime as dt
import matplotlib.pyplot as mp
import matplotlib.dates as md
def dmy2ymd(dmy):
dmy = str(dmy, encoding='utf-8')
date = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
ymd = date.strftime('%Y-%m-%d')
return ymd
# 读取 CSV 文件
dates, opening_prices, high_prices, low_prices, closing_prices = np.loadtxt(
'./aapl.csv',
delimiter=',',
usecols=(1, 3, 4, 5, 6),
unpack=True,
dtype=np.dtype('M8[D], f8, f8, f8, f8'),
converters={1: dmy2ymd}
)
# 打印日期数据
print(dates)
# 绘制蜡烛图
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=':')
dates = dates.astype(md.datetime.datetime)
rise = (closing_prices - opening_prices) >= 0.01
fall = (opening_prices - closing_prices) >= 0.01
fc = np.zeros(dates.size, dtype='3f4')
ec = np.zeros(dates.size, dtype='3f4')
fc[rise], fc[fall] = (1, 1, 1), (0, 0.5, 0)
ec[rise], ec[fall] = (1, 0, 0), (0, 0.5, 0)
mp.bar(dates, high_prices - low_prices, 0,
low_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()

6. 总结

通过上述步骤,我们成功地读取了CSV文件并对数据进行了分析与可视化。这个过程包括数据读取、字段转换和可视化绘图等多个环节,每一步都需要细心处理以确保最终结果的准确性。

转载地址:http://gzofk.baihongyu.com/

你可能感兴趣的文章
Python 中的装饰器是如何工作的,有哪些实际应用场景?
查看>>
python读excel
查看>>
Python 中读取 CSV 文件-ChatGPT4o作答
查看>>
Python 之 filecmp
查看>>
python请求html_使用Python请求获取HTML?
查看>>
Python 之匿名函数和偏函数
查看>>
python 之栈的实现
查看>>
python语音播放
查看>>
python语言:装饰器原理
查看>>
Python 交互式数据可视化详解
查看>>
python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
查看>>
Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
查看>>
Python 从数据库中存储和检索密码的最安全方法
查看>>
Python语言及其应用 - 知识点遍历
查看>>
Python 优化提速的 8 个小技巧
查看>>
Python 余弦相似度与皮尔逊相关系数 计算
查看>>
python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
查看>>
python 使用filetype校验文件
查看>>