Python数据分析(三)


Python数据分析(三)

一、获取目录下文件列表

1、pathlib库

pathlib库的方法

创建一个Path实例(即实例化一个Path类)

from pathlib import Path
f = Path(‘E:/datafolder/dataset/test.csv')

该类的方法:

Path.cwd()        #获取当前工作目录
f.exists()        #判断某个实例是否存在
f.is_dir()        #判断该路径是否是目录
f.is_file()       #判断该路径是否是文件
f.stat().st_size    #得到某个文件的大小
f.absolute()       #获取绝对路径
f.parent()        #获取路径的上级路径
f.name           #获取文件名
f.stem           #获取文件前缀
f.suffix         #获取文件后缀

2、获取目录的子目录或文件

from pathlib import Path
filepath = Path('./datafolder')
for file in filepath.iterdir():
    print(file)

ps.此时不获取目录中子目录下的文件

3、获取目录下所有文件

from pathlib import Path
filepath = Path(‘./datafolder')
for file in filepath.rglob('*.*'):  
    print(file)
    

ps.rglob() 函数:递归遍历所有满足条件的文件,类似于windows文件管理器用通配符进行搜索,支持前、后缀

  • .: 匹配0或多个字符
  • *.csv: 获取所有csv文件
  • data.*: 获得名为data的所有类型的文件

二、文件批量移动

1、将所需文件放在同一目录下——筛选+复制

Step1: 设置目标路径

from pathlib import Path
import shutil
dstpath = Path('./des') #要移动到的目标文件夹目录

Step2: 筛选所需文件

filepath = Path(‘./datafolder')
filelist = filepath.rglob('*.csv')

Step3: 复制所需文件

for file in filelist:
    shutil.copy(file, dstpath)
    

三、文件批量重命名——文件循环+文件重命名

Step1: 构想重命名的规则:

‘dataset’+ 递增数字 +’.csv’

Step2: 获取需要命名文件:

filepath = Path(‘./datafolder')
filelist = filepath.rglob('*.csv')

Step3: 依次对文件重命名:

for index, file in enumerate(filelist):
    newname = 'dataset'+str(index)+'.csv'
    file.rename(file.parent / newname)
    

四、文件批量读写

1、Pandas 实现数据连接

数据连接

纵向拼接——把相同列不同行连接在一起

pd.concat([df1,df2])
  • axis = 0: 表示列对齐(默认值)

  • keys = [‘df1’, ‘df2’]:添加层次标识数据来源

  • join = ‘outer’ : 得到两个表的并集(默认值)

  • join = ‘inner’ : 得到两个表的交集

  • 默认保留每个DataFrame的索引, ignore_index=False 可重排索引
    ——

    df1.append(df2)

  • append是concat的简略形式, 只默认在axis=0上进行合并

  • 默认保留每个DataFrame的索引, ignore_index=False 可重排索引

横向拼接——把相同行不同列连接在一起,即行对齐,列合并

pd.concat([df1,df2],axis=1)
  • axis = 1 : 表示行对齐
  • keys = [‘df1’, ‘df2’]:添加层次标识数据来源
  • join = ‘inner’ : 得到两个表的交集
  • join = ‘outer’ : 得到两个表的并集(默认值)
  • ignore_index=False 可对列索引采用默认索引

关联合并(merge)——通过一个或者多个键拼接列

pd.merge(df1, df2)
  • on = ’A’: 指定合并的列名
    – 如多个共存列时使用: on = [’A1’,’A2’]
    – 如果合并列在两表中列名不同,则使用:left_on与right_on
  • how = ‘inner’ :表示合并方式
    – inner(内连接,默认),outer(外连接),left(左连接),right(右连接)
  • suffixes = (‘df1’, ‘df2’): 标识不同数据中相同列
    – 若两个DataFrame中有相同列名,可以suffixes中的元组进行标识
    – 默认时加后缀_x,_y

2、文件批量读写——文件循环读取 & 内容拼接 & 数据保存

Step1: 获取需要读取的文件列表
Step2: 读取文件内容拼接在一起
Step3: 将拼接后的内容进行保存

from pathlib import Path
import pandas as pd
…
for file in filelist:
    df = pd.read_csv(file)
    #按需进行数据合并操作并得到mergeData
mergeData.to_csv(‘./alldata.csv‘, index = False)

小结


 上一篇
丢掉幻想,准备斗争------原文 丢掉幻想,准备斗争------原文
1949年8月14日,毛泽东发表了《丢掉幻想,准备斗争》,鲜明指出当时国内还有一些人对美国抱有幻想,“特别是在中国和美国的关系的问题上,还抱有某些幻想的人们说的。他们在这个问题上还是被动的,还没有下决心,还没有和美国帝国主义(以及英国帝国主
2022-08-17
下一篇 
Python数据分析(一) Python数据分析(一)
本文主要记录用Python进行数据分析经常用到的库,本笔记的前提是已经熟悉Python的基础语法和基本操作,关于Python的安装,环境变量的设置,编辑器的选择等不再赘述。
2022-08-17
  目录