2021-06-29

6.28数据分析学习笔记

#一、数组的拷贝
#栈区与堆区:都存在于内存中,栈区读取较快,空间小,堆区读取较慢,空间大。数组储存在堆区、指向数组的变量(a1)储存在栈区
#1、不拷贝:简单的赋值不会对堆区进行拷贝,只是会为原有栈区添加新名称,a1与a2都会指向堆区。
import numpy as np
a1 = np.random.randint(1,6,size = (1,6))
print(a1)
a2 = a1
print(a2 is a1)#(指a1与a2为同一栈区)
print("="*30)
#2、浅拷贝:进行了变量的拷贝,但他们所指向的内存空间是一样的,这样新的变量只是一个视图(view),修改视图会改变原变量,称为浅拷贝。浅拷贝没有复制堆区,只是新建立了一个栈区,命名为a3并重新指向a1堆区(ravel同理) 
a3 = a1.view()
a3[0,1] = 2
print(a1)
print(a3)
print(a3 is a1)#(指a1与a3为不同栈区)
print("="*30)
#3、深拷贝:对栈区与堆区同时进行拷贝(flatten同理)
a4 = a1.copy()
a4[:,5] = 3
print(a1)
print(a4)
print(a1 is a4)
#二、numpy文件操作
#1、savetxt及loadtxt:保存及读取csv文件(可设置header,不可存储三维及以上数组)
a1 = np.random.randint(1,6,size = (3,2))
a1
np.savetxt("test.csv",a1,delimiter = ",",header = '语文,哲学',comments = '',fmt = '%d')
a2 = np.loadtxt("test.csv",dtype=np.float,delimiter = ',' ,unpack = False,skiprows = 1)
print(a2)
#2、save及load:numpy的特有存储解决方案(不可设置header,可存储三维及以上数组)
np.save('a3',a1)
np.savez('a4',a1)
a5 = np.load("a3.npy")
a6 = np.load("a4.npz")
print(a5)
print(a6)
# 三、csv文件操作(python自带方法)
#1、读取csv文件
import csv
def read_cav_demo1():
    filename = r'C:\Users\chen\Documents\Jupyter\data\豆瓣华语电影数据处理后.csv'
    with open(filename,encoding ='UTF-8') as fp:
        reader = csv.reader(fp)#reader是一个迭代器
        next(reader)#next函数必须接收一个可迭代对象,每次调用的时候代返回当前行元素,并在下次调用的时候返回下一行
        for x in reader:
            actor = x[0]
            date = x[1]
            print({'actor':actor,'date':date})

def read_csv_demo2():
    filename = r'C:\Users\chen\Documents\Jupyter\data\豆瓣华语电影数据处理后.csv'
    with open(filename,encoding ='UTF-8') as fp:
        reader = csv.DictReader(fp)#DictReader会自动将第一行作为字典的键,将整个文件处理为字典,因此读取出来的结果没有第一行作为值,适合用于读取有标题行的文件
        for x in reader:
            value = {"actor":x["actor"],"director":x["director"],"date":x["date"]}
            print(value)

# if __name__ == '__main__':
#     read_csv_demo2()
#2、写入csv文件
def write_csv_demo1():
    filename = 'C:/Users/chen/Documents/Jupyter/data/test.csv'
    headers = ['username','age','height']
    values = [
       ('张三','18','180'),
       ('李四','19','175'),
       ('王五','21','181')
    ]
    with open(filename,'w',encoding = 'utf-8',newline = '') as fp:
        writer = csv.writer(fp)#规定如何写
        writer.writerow(headers)#写入
        writer.writerows(values)
        

def write_csv_demo2():        
    filename = 'C:/Users/chen/Documents/Jupyter/data/test - 副本.csv'
    headers = ['username','age','height']
    values = [
           {'username':'张三','age':'18','height':'180'},
           {'username':'李四','age':'19','height':'175'},
           {'username':'王五','age':'21','height':'181'}
        ]

    with open(filename,'w',encoding = 'utf-8',newline = '') as fp:
        writer = csv.DictWriter(fp,headers)#规定如何写
        writer.writeheader()#写入
        writer.writerows(values)

if __name__ == '__main__':
    read_csv_demo2()  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值