使用pandas处理csv并转为张量

使用pandas处理csv并转为张量

基本读取

需要先通过命令安装 pandas 包:

python 复制代码
pip install pandas

然后通过以下方式,向文件中写入简单的 csv 格式数据:

python 复制代码
import os

os.makedirs(os.path.join(".","data"),exist_ok=True)
data_file=os.path.join(".","data","stock.csv")
with open(data_file,"w") as f:
    f.write('name,price,date\n')
    f.write('aaa,12.4,0813\n')
    f.write('bbb,NaN,0812\n')
    f.write('NaN,NaN,0811\n')
    f.write('NaN,31,0810\n')

通过 read_csv 函数读取:

python 复制代码
import os
import pandas as pd

os.makedirs(os.path.join(".","data"),exist_ok=True)
data_file=os.path.join(".","data","stock.csv")


data=pd.read_csv(data_file)
print(data)
#   name  price  date
# 0  aaa   12.4   813
# 1  bbb    NaN   812
# 2  NaN    NaN   811
# 3  NaN   31.0   810

数据处理

price 列中包含 NaN 值,我们可以将其填充为该列的平均值:

python 复制代码
data_me=data.fillna(data.mean(numeric_only=True))
# (12.4+31.0)/2=21.7
print(data_me)
#   name  price  date
# 0  aaa   12.4   813
# 1  bbb   21.7   812
# 2  NaN   21.7   811
# 3  NaN   31.0   810

name 列包含 aaabbbNaN 三种值,我们可以将其每种值拆成单独一列,并赋一个值:

python 复制代码
data_me=pd.get_dummies(data_me,dummy_na=True)
print(data_me)
#    price  date  name_aaa  name_bbb  name_nan
# 0   12.4   813      True     False     False
# 1   21.7   812     False      True     False
# 2   21.7   811     False     False      True
# 3   31.0   810     False     False      True

然后我们便可以通过 torch 包,来将这个数据转换成多维数组:

python 复制代码
import torch

x=torch.tensor(data_me.to_numpy(dtype=float))
print(x)
# tensor([[ 12.4000, 813.0000,   1.0000,   0.0000,   0.0000],
#         [ 21.7000, 812.0000,   0.0000,   1.0000,   0.0000],
#         [ 21.7000, 811.0000,   0.0000,   0.0000,   1.0000],
#         [ 31.0000, 810.0000,   0.0000,   0.0000,   1.0000]],
#        dtype=torch.float64)

相关推荐
上玄code1 小时前
【Agent精讲】调一个LLMAPI背后的工程问题
java·开发语言·python·chatgpt
Uncommon.1 小时前
使用Pytorch操作张量(多维数组)
人工智能·pytorch·python
码云骑士1 小时前
105-Ollama本地部署-Llama3-Qwen2-Modelfile-REST-API
python
晚安code1 小时前
MCP Server 开发入门:手把手写一个能跑的 Server,三种协议怎么选
python·ai编程
CTA量化套保1 小时前
量化脚本准备实盘了吗?TqSdk 上线前工程检查
人工智能·python
HZZD_HZZD2 小时前
非侵入式负荷监测选`Seq2Point`还是`LSTM`?合众致达实测:洗衣机分解F1达0.87、`NDE`误差降27%,附PyTorch完整实现
人工智能·pytorch·lstm
青 春 记 忆2 小时前
零基础入门python07:让程序记住数据——JSON文件和异常处理
开发语言·windows·python·json·python3.11
清水白石0082 小时前
Python 如何设计一个线程安全的缓存?从锁策略、LRU 到工程化实战
python·安全·缓存