Python 数据处理

for 循环

遍历list等对象时,尽量不要用range

# 需要使用引索时,
for index,value in enmuerate(alist):
	print(index,value)
# 同时迭代两个循环
for word,number in zip(words,numbers):
	print(word,number)
# 当不需要获取一个完整数列时,使用xrange比range性能更好:
for i in xrange(100):
	print(i)

文件处理相关

文件遍历

用os.walk()比较方便
示例代码:

import os
workdir='./Data/'

for root,dirnames,filenames in os.walk(workdir):
    for name in filenames:
        filepath=os.path.join(root,name)#获取文件完整路径
        print(filepath)#得到路径后就可以进行各种处理啦
    
    #同理可对文件夹进行处理
    for name in dirnames:
        dirpath=os.path.join(root,name)#获取目录完整路径
        print(dirpath)#得到路径后就可以进行各种处理啦

os.walk()可选参数,topdown默认为True,将遍历子文件夹内文件,Flase时则不继续深入遍历,onerror 默认为None决定walk异常时的调用,followlinks 默认为False, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录。

文件名序列化

需要产生序列化的文件名(如0000~9999.jpeg),可以使用str.zfill()
示例代码:

import os
#批量重命名文件
workdir='./Data/'
tag=0
for root,dirnames,filenames in os.walk(workdir):
    for name in filenames:
        filepath=os.path.join(root,name)
        newname=os.path.join(root,str(tag).zfill(6)+".jpeg")
        os.rename(filepath,newname)
        tag+=1

获取特定文件路径

需要专门处理某些类型文件时常会用到,用glob可以很方便实现
示例代码

# *:匹配所有字符
# ?:匹配一个字符
# *.*: 匹配如[A.jpeg,B.text,CD.avi]
# ???.* 匹配如[123.jepg, 321.txt]
import glob
from PIL import Image
path_to_images='images/'
all_files = glob.glob(path_to_images+'*.jpeg') #匹配路径下所有jpeg文件

# 集合数据枚举函数enumerate
for i, image_file in enumerate(all_images):
    im = Image.open(image_file)
    im = im.resize((84, 84), resample=Image.LANCZOS)
    im.save(image_file)
    if i % 500 == 0:
        print(i)

字符串处理

反转字符串

用切片咯

str1='hello world'
out=str1[::-1]
print(out)

图片处理

简单的可以用PIL库实现,复杂一点操作的还是使用opencv吧…

PIL

在这里插入图片描述

from PIL import Image
im = Image.open('lena.png') # 读文件
im.show() # 显示图片
out1 = im.resize((128, 128)) # 改变大小为128*128
out2 = im.crop((100, 100, 400, 400)) # 裁剪,左上坐标(100,100),右下坐标(400,400)
out3 = im.rotate(90) # 旋转90°
r, g, b = im.split() # 获得图像的不同的通道的图像,如RGB
im.save('lena.jpeg') # 保存为jpeg格式

CSV文件处理

使用pandas库会比较方便
示例代码

import pandas as pd
df=pd.read_csv('test.csv',header=None,sep=' ') #读取文件,header指定是列名,sep指定数据分隔符
print(df.head(10)) # 输出前10行
print(df.tail(10)) # 输出后10行
df.columns =['col1','col2''col3''col4'] #自定义列名
printlen(df)) # 获取行数
detials=df.describe() #获取统计数据,如最大,最小,均值,标准差等
column1=df['col1'] #通过标签获取某列,也可以用使用点运算符获取,column1=df.col1
filter_data1=df[(df.col1<100)&(df.col2>200) ] #还可以在索引中使用条件判断,使用&或|,不能使用 and or
filter_data2=df[(df.col4.str.startwith('2017') ] #对于字符串需要使用str相关方法
df.iloc[10] # 获取第10行,起始为0,也可以使用标签引用 df.iloc['tag1']
df.sort_index(ascending=False) #降序排序 可选参数 axis=0 默认按行标签,1时为按列标签
df.groupby(df.col//2) # 按照一定规则分组,比如奇偶。
df.to_csv('save_file.csv',index=False,sep=',') # 保存为csv文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值