Python中数据处理(npz、npy、csv文件;元组、列表、numpy数组的使用)

目录

1.npz文件

2.npy文件

3.csv文件

4.列表、元组、numpy矩阵

①列表

②元组(不可变列表)

③Numpy数组

③Numpy矩阵

1.npz文件

npz是python的压缩文件

①读取文件

#独取文件 读取当前文件夹下的data的mag_cs
dataset = np.load('./data/mag_cs.npz', allow_pickle=True)
#通过上面这行代码得到的是一个`numpy.lib.npyio.NpzFile`文件

NpzFile对象有个属性files

可以通过它查看该压缩文件的所有文件名,通过dataset['文件名']来获取文件内容

print(dataset.files)
print(len(dataset.files))
# 文件内容、type、shape(以adj_matrix.data为例)
print(dataset['adj_matrix.data'])
print(type(dataset['adj_matrix.data']))
print(dataset['adj_matrix.data'].shape)

③保存为.npz文件

# 将x、y、z数组,分别保存为x, sinx, z这三个npz文件
x = np.arange(1, 10)
y = np.sin(x)
z = 2 * x + 0.5
np.savez_compressed('./data/my_dataset', x=x, sinx=y, z=z)
2.npy文件

①读取与保存

import numpy as np
​
data = np.zeros((3,4))
np.save('data.npy', data)   #保存
del data
data = np.load('data.npy')  #读取
​
print('type :', type(data))
print('shape :', data.shape)
print('data :')
print(data)

输出如下:

type : <class ‘numpy.ndarray’> shape : (8, 4) data : [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]

②npy转csv

  1. 加载npy格式的数据文件

  2. 给每一列数据添加一个列名

  3. 以csv格式保存数据

import pandas as pd
import numpy as np
import csv
​
data = np.load('data.npy')
columns = ['A', 'B', 'C', 'D'] # 这是个list?还是数组?
​
#保存为csv
with open('data.csv', 'w') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(columns)
    csv_writer.writerows(data) 
    
#查看保存的csv
df = pd.read_csv('data.csv')
print(df)
3.csv文件

1.使用csv.writer()创建

import csv
 
headers = ['学号','姓名','分数']
rows = [('202001','张三','98'),
        ('202002','李四','95'),
        ('202003','王五','92')]
with open('score.csv','w',encoding='utf8',newline='') as f :
    writer = csv.writer(f)      # 创建
    writer.writerow(headers)    # 写入列名
    writer.writerows(rows)      # 写入数据

2.使用csv.Dictwriter()创建

import csv
 
headers = ['学号','姓名','分数']
rows = [{'学号':'202001','姓名':'张三','分数':'98'},
        {'学号':'202002','姓名':'李四','分数':'95'},
        {'学号':'202003','姓名':'王五','分数':'92'}]
with open('score.csv','w',encoding='utf8',newline='') as f :
    writer = csv.DictWriter(f,headers)
    writer.writeheader()
    writer.writerows(rows)

3.使用writelines()创建:

import csv
 
headers = ['学号,姓名,分数','\n']
csv = ['202001,张三,98','\n',
        '202002,李四,95','\n',
        '202003,王五,92']
with open('score.csv', 'w',encoding='utf8',newline='') as f:
    f.writelines(headers) # write() argument must be str, not tuple
    f.writelines(csv)
4.列表、元组、numpy矩阵

python没有数组

1、元组的元素可以为:元组、列表、字典、集合 (列表作为元组的元素时,列表内的值可以改动)

2、列表的元素可以为:元组、列表、字典、集合

3、字典的元素可以为:元组、列表、字典、集合

4、集合的元素可以为:元组

①列表

列表中存放的数据是可以进行修改,比如”增”、“删”、“改”、“查”

# 使用[]存储,使用 , 分隔每个值
a = [1, 2, 3]
a = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
​
# 列表中的元素可以是不同类型的
a = [1, ‘a’]
​
# 列表元素修改
a[2] = "我喜欢她啊"
​
#字符串转列表
name = '小阿丁,小红'
list1 = list(name)
​
# 列表的嵌套
info = [['张三', 'M', '45'], ['李四', 'F', '36'], ['王五', 'M', '42']]
#取出李四年龄
print(schoolNames[1][2])
②元组(不可变列表)

元组的元素不能修改。元组使用小括号,列表使用方括号。 元组无法进行增删改。但可以拼接。

tuple = (1, 9, 7, 5, 6, 2,)
​
# 元组转列表
list1 = list(tuple)
# 列表转元组
tuple2 = tuple(list1)
​
# 元组嵌套
tup3 = ('python', (1, 2, 3), 'java', 3)
tup3 = ('python', [1, 2, 3], 'java', 3)
③Numpy数组

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

Numpy是专门针对数组的操作和运算进行了设计,所以数组的存储效率远优于Python中的嵌套列表。

Numpy数组中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的。

list可以存储一维数组,通过列表的嵌套可以实现多维数组。

list不具有array的全部属性(如维度、转置等)

import numpy as np
a = np.array([[1,2,0,1],[1,6,9,55],[7,8,9,5]]) #a为数组
print(a.T)                                     #输出a的转置
③Numpy矩阵

Numpy数组(arry)和矩阵(matrix)的区别:

Numpy matrices 是2维的

Numpy arrays (ndarrays) 可以是多维的

Matrix是Array的一个小的分支。matrix 拥有array的所有特性。

numpy中matrix的主要优势是:

相对简单的乘法运算符号。如,matrix: ab,就是矩阵积。 numpy里面arrays遵从逐个元素的运算。如array:cd,相当于matlab里面的c.d运算。而矩阵相乘,则需要numpy里面的dot命令 。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年12月23日
下一篇 2023年12月23日

相关推荐