python提取csv指定列

# -*- coding:utf-8 -*-
"""
作者:sunli
日期:2022年03月09日21:19
"""

# -*- coding:utf-8 -*-
import os
import cv2
import pandas as pd
import numpy as np
import configparser as cp
import matplotlib.pyplot as plt

# RAW_DATA_PATH = 'D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data'
PATH = 'D:/sy'
# DATA_PATH = 'D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data/DATA'
# PATH='D:/shujuji/MobiAct_Dataset_v2.0/kalman/'


Label = {'STD': 1, 'WAL': 2, 'JOG': 3, 'JUM': 4, 'STU': 5, 'STN': 6, 'SCH': 7, 'SIT': 8, 'CHU': 9,
         'LYI': 10, 'FOL': 0, 'FKL': 0, 'BSC': 0, 'SDL': 0, 'CSI': 11, 'CSO': 12}  # 字典


def extract_data(data_file, sampling_frequency):
    """
    从mobileFall中提取数据,用于做实验测试
    :param data_file:  原始数据文件
    :param sampling_frequency: 原始数据采集频率
    :return:
    """
    data = pd.read_csv(data_file)  # 指定源文件第一列作为行索引
    data_size = len(data.label)  # 标签数量
    for i in range(data_size):
        #print(data.iat[i, 11])
        data.iat[i, 11] = Label[data.iloc[i, 11]]  # 将对应的数字付给data的标签
       # print(data.iat[i, 11])
        # 单元格选取包括df.at[]和df.iat[]两种方法。
        # df.at[]和df.iat[]使用时必须输入两个参数,即行索引和列索引,其中df.at[]只能使用标签索引,df.iat[]只能使用整数索引。
        # df.at[]和df.iat[]选取的都是单个单元格(单行单列),所以返回值都为基本数据类型

    col_data = np.arange(0, data_size, 1)  # 第一个参数为起点,第二个参数为终点,第三个参数为步长
        # # 滑动窗口就是能够根据指定的单位长度来框住时间序列,从而计算框内的统计指标。相当于一个长度指定的滑块在刻度尺上面滑动,每滑动一个单位即可反馈滑块内的数据。
    extract_data = data.iloc[col_data, [0, 1, 2, 3, 4, 5, 6, 7, 11]]  # 选取加速度计和陀螺仪数据和行为标签
    print(extract_data)

    # save_path = os.path.abspath('D:/shujuji/MobiAct_Dataset_v2.0/Annotated Data/DATA/'+((os.path.dirname(data_file) + os.path.sep + ".").replace(RAW_DATA_PATH, '')) )#语法:os.path.dirname(path)
    # 功能:去掉文件名,返回目录
    #
    save_path = os.path.abspath(os.path.dirname(data_file) + os.path.sep + ".").replace(PATH, '')
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    save_path = PATH + data_file.replace(PATH, '')
    extract_data.to_csv(save_path, index=0)


def find_all_data_and_extract(path):
    """
    递归的查找所有文件并进行转化
    :param path:
    :return:
    """
    if not os.path.exists(path):  # 检查在某路径内是否存在某文件。如果path存在,返回True;如果path不存在,返回False
        print('路径存在问题:', path)
        return None

    for i in os.listdir(path):  # 得到路径path下的所有文件,返回list列表形式  i="BSC"
        if os.path.isfile(path + "/" + i):
            if 'csv' in i:
                extract_data(path + "/" + i, 200)
        else:
            find_all_data_and_extract(path + "/" + i)


def main():
    find_all_data_and_extract(PATH)  # 对原始数据做处理


if __name__ == '__main__':
    main()
    # data = pd.read_csv('D:/sy/s2/BSC_1_2_annotated.csv')
    # print(data)

"""
  data1 = pd.read_csv('D:/shujuji/MobiAct_Dataset_v2.0/kalman/BSC_1_1_annotated.csv')
  show_data(data1)
  data2 = pd.read_csv('D:/shujuji/MobiAct_Dataset_v2.0/test/BSC/BSC_1_1_annotated.csv')
  show_data(data2)
"""

你可能感兴趣的:(python,机器学习,开发语言)