matlab2021版关于csv文件读写的一些方法

首先给出一些演示数据,直接给出来大家看起来都方便
完整代码在最后,有基础的可以直接看代码
下面是data.csv的文件内容,可以看得出里面有文本也有数值。

代码,名称,最新价,涨跌额,涨跌幅,买入,卖出,昨收,今开,最高,最低,成交量,成交额
sh600000,浦发银行,8.75,-0.05,-0.568,8.75,8.76,8.8,8.78,8.8,8.72,28252954.0,247296068.0
sh600004,白云机场,13.9,1.08,8.424,13.9,13.91,12.82,13.18,14.03,13.12,54580226.0,751308612.0
sh600006,东风汽车,6.46,-0.15,-2.269,6.46,6.47,6.61,6.59,6.59,6.43,10572831.0,68746162.0
sh600007,中国国贸,14.11,-0.1,-0.704,14.1,14.13,14.21,14.19,14.29,14.02,1667300.0,23557102.0
sh600008,首创环保,3.35,-0.03,-0.888,3.34,3.35,3.38,3.37,3.37,3.33,39982746.0,133824032.0
sh600009,上海机场,54.39,3.34,6.543,54.39,54.4,51.05,52.0,55.34,52.0,31432123.0,1704492619.0
sh600010,包钢股份,2.5,-0.03,-1.186,2.49,2.5,2.53,2.52,2.52,2.48,247833786.0,619607197.0
sh600011,华能国际,8.68,0.25,2.966,8.66,8.68,8.43,8.33,8.95,8.3,125973765.0,1093612339.0

我这里介绍三种方式来读这个文件
第一种是importdata
(读的时候记得把data.csv放在脚本文件的同一个目录下)

all = importdata('data.csv');
data = all.data  % 获取数值数据
textdata = all.textdata %获取文本数据

运行结果:

data =

1.0e+09 *

列 1 至 5

0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000

列 6 至 10

0.0000    0.0000    0.0000    0.0000    0.0283
0.0000    0.0000    0.0000    0.0000    0.0546
0.0000    0.0000    0.0000    0.0000    0.0106
0.0000    0.0000    0.0000    0.0000    0.0017
0.0000    0.0000    0.0000    0.0000    0.0400
0.0000    0.0000    0.0000    0.0000    0.0314
0.0000    0.0000    0.0000    0.0000    0.2478
0.0000    0.0000    0.0000    0.0000    0.1260

列 11

0.2473
0.7513
0.0687
0.0236
0.1338
1.7045
0.6196
1.0936

textdata =

9×13 cell 数组

列 1 至 3

{'代码'    }    {'名称'   }    {'最新价' }
{'sh600000'}    {'浦发银行'}    {0×0 char}
{'sh600004'}    {'白云机场'}    {0×0 char}
{'sh600006'}    {'东风汽车'}    {0×0 char}
{'sh600007'}    {'中国国贸'}    {0×0 char}
{'sh600008'}    {'首创环保'}    {0×0 char}
{'sh600009'}    {'上海机场'}    {0×0 char}
{'sh600010'}    {'包钢股份'}    {0×0 char}
{'sh600011'}    {'华能国际'}    {0×0 char}

列 4 至 7

{'涨跌额' }    {'涨跌幅' }    {'买入'  }    {'卖出'  }
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}

列 8 至 11

{'昨收'  }    {'今开'  }    {'最高'  }    {'最低'  }
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}

列 12 至 13

{'成交量' }    {'成交额' }
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}
{0×0 char}    {0×0 char}

我们主要使用的就是数值数据,他会自动将是数值数据的列取出来因此数值数据只有11列,剩下两列明显是非数值的。

第二种方法csvread

data2 = csvread("data.csv", 1, 2)

表示读取的是跳过第一、二列和跳过第一行的数据才开始读取。这种方法好像不太能读文本数据,读了就报错。
运行结果就是和上面读取的数值内容是一样的。

第三种readtable

d = readtable('data.csv')

保存数据
第一种csvwrite

csvwrite("output.csv",data2, 0, 0)

参数分别为 文件名, 数据, 要保存的内容从第几行、列往后开始保存,同样好像不能够保留文本。

第二种writetable

% 官方文档给的示例
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
writetable(T,"o.csv")

o.csv打开如下
在这里插入图片描述
可见能够保留字符串,列索引都可以看得到。
同样我们可以自定义列索引和行索引

T.Properties.VariableNames = {'a','b','c','d','e','f'}
T.Properties.RowNames = {'g','h','i','j','k'}

结果如下
在这里插入图片描述

完整代码:
(要看哪条的结果记得把分号去掉)

clc, clear
all = importdata('data.csv');
r = readtable("data.csv");
data = all.data;
textdata = all.textdata;
data2 = csvread("data.csv", 1, 2);
d = readtable('data.csv')

csvwrite("output.csv",data2, 0, 0);

LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure);
T.Properties.VariableNames = {'a','b','c','d','e','f'};
T.Properties.RowNames = {'g','h','i','j','k'};
writetable(T,"o.csv");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Icy Hunter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值