前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python】读取csv xlsx xlx txt文件 类

【python】读取csv xlsx xlx txt文件 类

作者头像
司六米希
发布2022-11-15 19:04:31
1.1K0
发布2022-11-15 19:04:31
举报
文章被收录于专栏:司六米希

只需修改path

代码语言:javascript
复制
class Reader:
    """
    可读取的文件格式: .csv .tsv .xlsx .xlx .txt
    """

    @staticmethod
    def change_1d_array(array, header_cut=None, str_to_float=None):
        """
        为一维数组去掉第一个值;将字符串转为数值
        :param array: type:<class 'numpy.ndarray'> shape:(n,)
        :param header_cut: Ture/None 是否需要第一个值
        :param str_to_float: Ture/None 是否需要字符转数值
        :return: 二维数组
        """
        if header_cut != None:
            arr = list(array)
            arr.remove(arr[0])
            array = np.array(arr)
        if str_to_float != None:
            array = np.array(list(map(float, array)))

        return array

    @staticmethod
    def change_2d_array(array, header_cut=None, str_to_float=None):
        """
        为二维数组去掉第一行;将字符串转为数值
        :param array: type:<class 'numpy.ndarray'> shape:(n, n)
        :param header_cut: Ture/None 是否需要第一行
        :param str_to_float: Ture/None 是否需要字符转数值
        :return: 二维数组
        """
        if header_cut != None:
            arr = list(array)
            arr.remove(arr[0])
            array = np.array(arr)
        if str_to_float != None:
            array = array.astype(np.float64)

        return array

    @staticmethod
    def get_rows_cols(data):
        """
        拿到二维数组的每一行和每一列(此处假设每一行的列数相同)
        :param data: type: <class 'numpy.ndarray'>   shape:(n,n)
        :return:rows:every rows  cols:every cols
        """
        rows = []   # 每一行作为元素
        cols = []   # 每一列作为元素
        for value in data:
            rows.append(value)
        for i in range(len(data[0])):
            cols.append(data[:, i])
        # 转为np数组
        rows = np.array(rows)
        columns = np.array(cols)

        return rows, columns

    @staticmethod
    def read_csv(path):
        """
        读取.csv或.tsv文件
        :param path:文件路径
        :return:二维数组
        """
        array = pd.read_csv(path, header=None)
        np_array = np.array(array)
        return np_array

    @staticmethod
    def read_xlsx(path, num_of_sheet):
        """
        读取.xlsx或.xlx文件,为二维数组
        :param path: 文件路径
        :param num_of_sheet: 表数
        :return: 二维数组
        """
        # 读取文件
        wb = load_workbook(path)
        # 获取当前所有的sheet
        sheets = wb.worksheets
        # 选择某个sheet
        sheet = sheets[num_of_sheet]
        # 获得这个sheet的行
        rows = sheet.rows
        # 迭代读取所有的行,每一行作为一个列表
        data = []
        for row in rows:
            data.append([col.value for col in row])
        data = np.array(data)
        return data

    @staticmethod
    def read_txt(path):
        """
        1.目前.txt文件里每一行的相隔只能是','或者'\t'
        :param path: 文件路径
        :return: 二维数组
        """
        data = np.loadtxt(path)
        return data


if __name__ == '__main__':
    reader = Reader()   # 实例化
    path = './y.xlsx'    # 路径
    data = reader.read_xlsx(path, 0)    # 读取路径下的.xlsx的第0个表
    data = reader.change_2d_array(data, header_cut=True, str_to_float=True)  # 将第一行去掉,然后将所有字符串转为float
    # 1.原始数据
    x = data[:, 4]
    y = data[:, 5]
    ps = data[:, 6]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档