pandas处理excel

万开畅
2023-12-01

最近 写了一个脚本处理excel,发现pandas处理数据的时候真的很强大,
首先 导入pandas库

import pandas
# 导入文件
data = pandas.read_excel('***.xlsx')
#   df是一个dataform对象,类似一个二维表格
df = pandas.DataFrame(data)
printf(df)
#   显示结果是
    a_  b_  c_  d_
0   1  2  3  4
1   5  6  7  8
2   1  2  3  4
3  10  3  4  5

对excel 重命名第一行,就是标题,

df.columns = ['a','b','c','d']
    a b  c  d
0   1  2  3  4
1   5  6  7  8
2   1  2  3  4
3  10  3  4  5

增加列

#   在最后增加一列数据e 全为add
#   这里如果是[1:2,"e"] = 'add' 就是在最后一列第二行到第三行增加add
df.loc[:,"e"] = "add"
#   在a后面复制a的这一列 并且命名为name, 1表示在第一列插入
df.insert(1, 'name', df['a'])
#   在第二列插入数据 'aa', 名字为name
df.insert(2,'name,'aa')

修改列

    # 删除一列, 和多列, 和行
    # inplace表示将修改的数据 是否保存, axis表示1列,默认是1行
    # df.drop('a',axis=1,inplace=True)
    # 删除多列
    df.drop(['a', 'b'], axis=1, inplace=True)  

将表中的数据进行替换

#   这一个中显示df还是原来的值,因为,replace默认会返回一个替换后的值,
#   可以用df=df['a'].replace(1, 100)
#   或者加个参数inplace=True
# df['a'].replace(1, 100)
# 将a这一列中的1全部替换成100,并保存, 不加后面的参数,会返回一个修改后的对象,
df['a'].replace(1, 100, inplace=True)

#   将所有的3替换成300
df.replace(3, 300, inplace=True)
# 替换 指定列, replace 里面可以是一个字典集合
df.replace({'b':{2: '男', 100:'女'}, 'c':{2:'男', 300:'女'}}, inplace=True)

修改一行的数据,为连续的流水号

产生流水号为0001, 到0099
for i in range(10001, 10100):
    i = str(i)[1:]
    print(i)

#   在某一列插入连续数据
# pandas的索引函数主要有三种: 
# loc 标签索引,行和列的名称 
# iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0 
# ix 是 iloc 和 loc的合体 
# at是loc的快捷方式 
# iat是iloc的快捷方式
j = 0
for i in range(1, 10)
    df.iloc[j, 0] = i
    j+1 

查看行数和列数

df.columns.size#列数 
df.iloc[:,0].size#行数 

保存文件

df.to_excel("../new_excel.xlsx", sheet_name="01", index=False, header=True)

推荐pandas文档
https://www.cnblogs.com/prpl/p/5537417.html
http://pandas.pydata.org/pandas-docs/stable/whatsnew.html
https://blog.csdn.net/liufang0001/article/details/77856255

在线阅读:https://apachecn.github.io/pandas-doc-zh/

Github:https://github.com/apachecn/pandas-doc-zh

参考文章
https://blog.csdn.net/qq_33399185/article/details/60872853
https://blog.csdn.net/claroja/article/details/65661826
https://blog.csdn.net/yoonhee/article/details/76168253

 类似资料: