使用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)

相关推荐
2601_962299497 分钟前
使用 Python 将 CSV 转为 PDF(含表格样式美化)
python·pdf·csv·spire.xls·表格样式
2601_9620779820 分钟前
利用Python,四步掌握机器学习
python·机器学习·数据挖掘·数据分析·编程
axinawang36 分钟前
requests--爬取网页内容
python
盼小辉丶1 小时前
PyTorch强化学习实战——融合人类示范数据的高效强化学习
人工智能·pytorch·python·深度学习·强化学习
聪明蛋子哟2 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
DM今天肝到几点?2 小时前
GPT-6 Astra 发布:ARC-AGI-3 从 7.8% 跳到 99.9%,OpenAI 宣告「欢迎进入 AGI 时代」
人工智能·gpt·深度学习·agi
李妍.2 小时前
PyTorch GPU 版安装记录(RTX 5060 + Python 3.14)
人工智能·pytorch·python
90后的晨仔2 小时前
Python 基础语法完整汇总
python
广慈新医知2 小时前
当健康问题越来越复杂,AI更适合先帮我们“把问题问清楚”
人工智能·python
一晌小贪欢2 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公