pandas处理各种表格数据

本文介绍如何使用Pandas库处理Excel、CSV等格式的数据,包括数据读取、处理缺失值、逐块读取及数据导出等功能,并展示了如何将JSON或数据库数据转化为DataFrame。

pandas处理各种表格数据

 

 

经常遇到Python读取excel和csv还有其他各种文件的内容。json还有web端的读取还是比较简单,但是excel和csv的读写是很麻烦。这里记录了pandas库提供的方法来实现文本内容和DataFrame的转化。

一、读取文本格式数据

首先来看一下针对不同格式的文件的读取函数:

pandas解析函数.png

总结一下常见参数:(例子见下面代码)

参数作用
sep指定分隔符,可以是正则表达式
header设置为None时处理没有header的文件
names指定列
index_col将列做成索引,可传入列表,可体现层次
skiprows跳过注释行
na_values接收表示缺失值的列表或字典

 

import pandas as pd
import numpy as np
import sys
import pymysql
df = pd.read_csv('ex1.csv')
print(df)
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo
df = pd.read_table('ex1.csv',sep=',') #可以使用read_table,但必须指定分隔符
# sep还可以是正则表达式
print(df)
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo
df = pd.read_csv('ex2.csv',header = None)#不是每一个csv都有header
print(df)
  •  
   0   1   2   3      4
0  1   2   3   4  hello
1  5   6   7   8  world
2  9  10  11  12    foo
df = pd.read_csv('ex2.csv',names=['a','b','c','d','names'])#指定名字
print(df)
   a   b   c   d  names
0  1   2   3   4  hello
1  5   6   7   8  world
2  9  10  11  12    foo
names=['a','b','c','d','names']
df = pd.read_csv('ex2.csv',names=names,index_col='names') #将names做成索引
print(df)
#names对应三个,abcd分别有对应的
  • 1
  • 2
  • 3
  • 4
       a   b   c   d
names               
hello  1   2   3   4
world  5   6   7   8
foo    9  10  11  12
  • 1
  • 2
  • 3
  • 4
  • 5
df = pd.read_csv('csv_mindex.csv')
print('原始样子:','\n',df)
df = pd.read_csv('csv_mindex.csv',index_col=['keys','key2'])
#层次化索引.
#请注意keys和key2的顺序
print(df)
原始样子: 
   keys key2  value1  value2
0  one    a       1       2
1  one    b       3       4
2  two    a       9      10
3  two    c      13      14
           value1  value2
keys key2                
one  a          1       2
     b          3       4
two  a          9      10
     c         13      14
df = pd.read_csv('ex4.csv')
print('原始样子:','\n',df)
#跳过文件的第几行
print()
df = pd.read_csv('ex4.csv',skiprows=[0,2])
print(df)
原始样子: 
                                                           # hey!
a                                           b   c   d    message
# just wanted to make things more difficult NaN NaN NaN      NaN
1                                           2   NaN 4      hello

   a  b   c  d message
0  1  2 NaN  4   hello
pd.isnull(df)# 处理缺失值
df = pd.read_csv('ex4.csv',skiprows=[0,2],na_values=['hello'])# 接收一组用于表示缺失值的字符串
print(df)
print(pd.isnull(df))
   a  b   c  d  message
0  1  2 NaN  4      NaN
       a      b     c      d  message
0  False  False  True  False     True
sentinels = {'message':['foo','NA'],'d':['a','NaN']}# 用一个字典为各列指定不同的NA标记值
df = pd.read_csv('ex4.csv',skiprows=[0,2],na_values=sentinels)
print(df)
   a  b   c  d message
0  1  2 NaN  4   hello

这里,给出了更详细的参数情况:

read_csvANDread_table参数1.png

read_csvANDread_table参数2.png

二、逐块读取文本文件

这里还是参数的调整问题。由于参数过少,这里不做统一整理。

# nrows参数指定只读取定行。算上第一行哦
pd.read_csv('ex1.csv',nrows=4)
  • 1
  • 2

table1.png

# chunksize 指定分块读取
chunks = pd.read_csv('ex1.csv',chunksize=2)
print(chunks)
<pandas.io.parsers.TextFileReader object at 0x0000007D7E4A39B0>
  •  
for chunk in chunks:
    print(chunk)
    print('='*10,)
  •  
   a  b  c  d message
0  1  2  3  4   hello
1  5  6  7  8   world
==========
   a   b   c   d message
2  9  10  11  12     foo
==========

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

data = pd.read_csv('ex1.csv',nrows=3)
  •  
data.to_csv('ex1_1.csv') #to_csv写入
  •  
data.to_csv('ex1_2.csv',sep='|')# 别的分隔符
  •  
data.to_csv('ex1_1.csv',na_rep='NULL')# 缺失值会被替换为na_rep
  •  
data.to_csv(sys.stdout,index=False,header=False) 
# 行、列标签被禁止
# 输出到控制台
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
data.to_csv(sys.stdout,index=False,columns=['a','b'])
  •  
a,b
1,2
5,6
9,10
data.to_csv(sys.stdout)
  •  
,a,b,c,d,message
0,1,2,3,4,hello
1,5,6,7,8,world
2,9,10,11,12,foo

四、DataFrame和数据库

# 可以将json格式的数据传给DataFreame
# 也可以数据将数据库的rows传给DataFrame
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)
(('aid', 3, None, 16, 16, 0, False), ('site_id', 3, None, 16, 16, 0, False), ('count', 3, None, 32, 32, 0, False))
  •  
# cursor.description第一个保存了列的信息
# pd.DataFrame(rows,columns=[i[0] for i in cursor.description])
pd.DataFrame(list(rows),columns=[i[0] for i in cursor.description]) #rows必须是list类型

table2.png

 
 

 

 

### 使用 Pandas处理 Excel 表格数据 Pandas 是 Python 中用于数据分析的强大工具之一,能够高效地处理各种结构化数据,包括来自 Excel 的表格数据。以下是关于如何使用 Pandas 处理 Excel 表格数据的具体方法: #### 1. 导入必要的模块 为了操作 Excel 文件,首先需要安装 `openpyxl` 或者 `xlsxwriter` 这样的第三方库来支持 `.xlsx` 类型文件的读写。接着可以导入 Pandas 和其他必要模块。 ```python import pandas as pd ``` #### 2. 读取 Excel 文件 可以通过 `pd.read_excel()` 函数加载 Excel 文件中的数据到 DataFrame 对象中[^3]。 ```python # 基础读取 df = pd.read_excel('data.xlsx') # 查看前五行数据 print(df.head()) ``` 如果需要更复杂的配置,比如设置特定列为索引或者跳过某些行,则可以根据需求调整参数[^4]。 ```python # 设置索引列 student = pd.read_excel(filePath, index_col='ID') # 指定数据类型 student = pd.read_excel(filePath, dtype={'ID': str, 'Name': str, 'Age': int, 'Grade': float}) # 跳过前面若干行 student = pd.read_excel(filePath, skiprows=2) ``` #### 3. 数据清洗与转换 一旦数据被成功载入内存之后,就可以利用 Pandas 提供的各种功能来进行数据清理和预处理工作[^2]。 - **重命名列名** ```python df.rename(columns={"旧名称": "新名称"}, inplace=True) ``` - **删除不需要的列** ```python del df['多余列'] ``` - **创建新的计算字段** ```python df['总分'] = df['语文成绩'] + df['数学成绩'] + df['英语成绩'] ``` #### 4. 合并多个 Excel 文件 当存在多份独立但关联紧密的数据集时,可能希望将其整合成单一视图以便后续分析。这可通过简单的拼接实现[^5]。 ```python df_combined = pd.concat([df_part1, df_part2], ignore_index=True) ``` 最后保存修改后的结果回磁盘上的另一个 Excel 文档里去。 ```python df.to_excel('output_file_path.xlsx', sheet_name='Sheet1') ``` 以上便是基于 Pandas 实现基本Excel管理的一些技巧概览;当然实际应用过程中还会有更多细节需要注意摸索学习!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值