pandas处理各种表格数据
发布日期:2021-05-18 03:15:53 浏览次数:20 分类:精选文章

本文共 2689 字,大约阅读时间需要 8 分钟。

Pandas处理各种表格数据

一、读取文本格式数据

Pandas库提供了多种函数来读取不同格式的文本文件。以下是常见参数的解释和示例:

1.1 常见参数

  • sep:指定分隔符,可为逗号、空格或其他正则表达式。
  • header:默认为True,读取文件的第一行为列名。如果设为None,则不读取标题行。
  • names:指定列名列表,可以与header配合使用。
  • index_col:将某一列作为数据框的索引,可以传入多个列名表示层次化索引。
  • skiprows:跳过注释行,传入列表形式。
  • na_values:指定缺失值的表示方式,可以是列表或字典。

1.2 示例代码

import pandas as pd
import numpy as np
import sys
# 读取CSV文件,默认有标题行
df = pd.read_csv('ex1.csv')
print(df)
# 指定分隔符为逗号
df = pd.read_table('ex1.csv', sep=',')
print(df)
# 读取没有标题行的CSV文件
df = pd.read_csv('ex2.csv', header=None)
print(df)
# 自定义列名
df = pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'names'])
print(df)
# 将某一列作为索引
df = pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'names'], index_col='names')
print(df)
# 读取带有层次化索引的文件
df = pd.read_csv('csv_mindex.csv')
print('原始样子:', '\n', df)
# 读取带有层次化索引的文件(重命名索引)
df = pd.read_csv('csv_mindex.csv', index_col=['keys', 'key2'])
print(df)
# 跳过特定行
df = pd.read_csv('ex4.csv')
print('原始样子:', '\n', df)
# 跳过指定行
df = pd.read_csv('ex4.csv', skiprows=[0, 2])
print(df)
# 指定缺失值表示方式
df = pd.read_csv('ex4.csv', skiprows=[0, 2], na_values=['hello'])
print(df)
# 使用字典指定不同列的缺失值表示
sentinels = {'message':['foo', 'NA'], 'd':['a', 'NaN']}
df = pd.read_csv('ex4.csv', skiprows=[0, 2], na_values=sentinels)
print(df)

二、逐块读取文本文件

对于大型文件,可以通过分块读取来提高处理效率。

2.1 nrows参数

pd.read_csv('ex1.csv', nrows=4)

2.2 chunksize参数

chunks = pd.read_csv('ex1.csv', chunksize=2)
for chunk in chunks:
print(chunk)
print('=' * 10)

2.3 示例输出

a   b   c   d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
=======
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
>>>>>>>

三、将数据写出到文本格式

3.1 基础写入

data = pd.read_csv('ex1.csv', nrows=3)
data.to_csv('ex1_1.csv')

3.2 定义分隔符

data.to_csv('ex1_2.csv', sep='|')

3.3 处理缺失值

data.to_csv('ex1_1.csv', na_rep='NULL')

3.4 输出到控制台

data.to_csv(sys.stdout, index=False, header=False)

3.5 指定写入列

data.to_csv(sys.stdout, index=False, columns=['a', 'b'])

3.6 全列写入

data.to_csv(sys.stdout)

3.7 示例输出

1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo

四、DataFrame和数据库

4.1 从数据库读取数据

import pymysql
conn = pymysql.connect(host='172.31.238.166', port=3306, user='luowang', passwd='root', charset='UTF8', db='dyx')
cursor = conn.cursor()
sql = 'select * from access_log'
cursor.execute(sql)
rows = cursor.fetchall()
print(cursor.description)
# 创建DataFrame
df = pd.DataFrame(rows, columns=[i[0] for i in cursor.description])
print(df)

4.2 从数据库读取数据(二维结果)

rows = list(rows)
df = pd.DataFrame(rows, columns=[i[0] for i in cursor.description])
print(df)

4.3 读取带有层次化索引的数据库数据

pd.DataFrame(list(rows), columns=[i[0] for i in cursor.description])

通过以上方法,可以方便地读取和处理各种格式的数据,并将结果写出到文本文件中。Pandas库为数据处理提供了强大的工具,适用于各种复杂场景。

上一篇:茅台又火了,又可以躺着赚钱了
下一篇:Pandas Style 为数据表格美颜

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月14日 05时46分06秒