侧边栏壁纸
博主头像
技术探索

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Python读写CSV文件

admin
2024-12-08 / 0 评论 / 0 点赞 / 21 阅读 / 0 字

pandas-mdmx.png

pandas是强大数据分析和操作工作,它提供快速、灵活和表达力强的数据结果,主要用于数据清洗和分析工作。通过pandas可方便的读取、操作和存储CSV数据格式。

生成表格数据保存到文件

def generate_csv(filename):
    df = pd.DataFrame(np.arange(25).reshape((5,5)),
                       columns=['A','B','C','D','E'],
                       index=None)
    df.to_csv(filename, index=False)


if __name__ == '__main__':
    generate_csv('input.csv')

    pandas_loc('input.csv', 'output.csv')
    pandas_iloc('input.csv', 'output.csv')

通过行号和列名取数据

def pandas_loc(in_file, out_file):
    # pd.set_option('display.max_rows', None)
    # pd.set_option('display.max_columns', None)
    data = pd.read_csv(in_file, encoding='utf-8') # 读全部数据
    # data = pd.read_csv(in_file, encoding='gbk', nrows=10) # 只读取头面10行
    # data = pd.read_csv(in_file, encoding='gbk', usecols=[0]) # 只读取第一列数据
    # data = data.reset_index(drop=True)

    print(data)

    # 读连续几行
    y = data.loc[0:3]
    print('\ndata.loc[0:3]\n', y)

    # 读不连续行
    y = data.loc[[1,3]]
    print('\ndata.loc[[1,3]]\n', y)

    # 读连续几列
    y = data.loc[:, 'A':'C']
    print('\ndata.loc[:, A:C]\n', y)

    # 读不连续列
    y = data.loc[:, ['A','C']]
    print('\ndata.loc[:, [A,C]]\n', y)

    data.to_csv(out_file, index=False)

loc测试输出

    A   B   C   D   E
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24

# 读连续几行
data.loc[0:3]
     A   B   C   D   E
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19

# 读不连续行
data.loc[[1,3]]
     A   B   C   D   E
1   5   6   7   8   9
3  15  16  17  18  19

# 读连续几列
data.loc[:, A:C]
     A   B   C
0   0   1   2
1   5   6   7
2  10  11  12
3  15  16  17
4  20  21  22

# 读不连续列
data.loc[:, [A,C]]
     A   C
0   0   2
1   5   7
2  10  12
3  15  17
4  20  22

通过行号和列号取数据

def pandas_iloc(in_file, out_file):
    # pd.set_option('display.max_rows', None)
    # pd.set_option('display.max_columns', None)
    data = pd.read_csv(in_file, encoding='utf-8') # 读全部数据
    # data = pd.read_csv(in_file, encoding='gbk', nrows=10) # 只读取头面10行
    # data = pd.read_csv(in_file, encoding='gbk', usecols=[0]) # 只读取第一列数据
    # data = data.reset_index(drop=True)

    print(data)

    # 读连续几行
    y = data.iloc[0:3]
    print('\ndata.iloc[0:3]\n', y)

    # 读不连续行
    y = data.iloc[[1,3]]
    print('\ndata.iloc[[1,3]]\n', y)

    # 读连续几列
    y = data.iloc[:, 0:3]
    print('\ndata.iloc[:, 0:3]\n', y)

    # 读不连续列
    y = data.iloc[:, [1,3]]
    print('\ndata.iloc[:, [1,3]]\n', y)

    data.to_csv(out_file, index=False)

iloc测试输出

    A   B   C   D   E
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24

# 读连续几行
data.iloc[0:3]
     A   B   C   D   E
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14

# 读不连续行
data.iloc[[1,3]]
     A   B   C   D   E
1   5   6   7   8   9
3  15  16  17  18  19

# 读连续几列
data.iloc[:, 0:3]
     A   B   C
0   0   1   2
1   5   6   7
2  10  11  12
3  15  16  17
4  20  21  22

# 读不连续列
data.iloc[:, [1,3]]
     B   D
0   1   3
1   6   8
2  11  13
3  16  18
4  21  23
0

评论区