python操作excel,用pandas库操作Excel的创建、读取、写入、保存,增、减、修、查的函数

pandas库操作excel中的数据资料整理,使用说明,将以下代码内容复制到text文件中保存,然后有不懂的地方查找此文档中的关键字学习,此文档包括pandas的读取、写入、保存,增、减、修、查等操作

Excel的创建、读取、写入、保存,增、减、修、查(用pandas读写操作)
#coding=utf-8
import pandas as pd
import os
import numpy as np
os.chdir('/Users/houzhixian/Desktop')
a=pd.read_excel('123.xlsx')#pandas读取excel
c=pd.DataFrame(a)#用pandas转化为dataframe结构数据
#b=c.dropna()
#print(c.values)#查看dataframe中的数据值,不包括行和列
d=c.values#取dataframe中的纯数据值
#d.to_excel('123d.xlsx')
#print(d)
k=pd.DataFrame(d)
data = pd.DataFrame()
#print(k)
b=[[1,2,3,4]]#如果用一个中扩号表示b为一个列,附加到k中会竖着添加到第一列末尾,后面用空值填充,即添加len(b)行,用两个括号才表示为行向量
#cd=data.append(b,ignore_index=True)
k1=k.append(b,ignore_index=True)#参数ignore_index为True,代表附加后重新整理排序
k[25]=np.arange(1,496)#在dataframe数据k中增加名为“25”的一列在最后,数字命名,列的长度和k的index要一致

k.columns=[1,1,1,1,1]#指定k的每一列的名称,名称个数必须与dataframe的列的个数相同
print(k.columns)#打印列名称
#显示为:RangeIndex(start=0, stop=4, step=1)
print(k.index)#打印行index名称
#显示为:RangeIndex(start=0, stop=495, step=1)
#print(k[1][2])#打印datafram k的第2列第三行数据

#k= k.reset_index()



kd={'x':pd.Series([np.arange(1,365)])}

kk = kk.reset_index()
print(kd)
kk=pd.DataFrame(kd)

#k1=k.append(kk,ignore_index=True)

k.to_excel('123hh.xlsx','page_2',float_format='%.5f')#保存dataframe数据k到名称为123h.xlsx“的excel
                        #下面为方法二:保存为excel文件
writer = pd.ExcelWriter('1234h.xlsx')#1创建名称为1234h.xlsx的excel表格,只有文件没有创建sheet,因此无法打开
k.to_excel(writer,'page_1',float_format='%.5f')  #关键2,float_format 控制精度,将data_df写到hhh表格的第一页中。若多个文件,可以在page_2中写入
writer.save()  #3保存1与2的操作,只有完成此保存才能真正打开保存的1234h.xlsx文件






缺失值	类型	说明
None	NoneType	None不同于空列表和空字符串,是一种单独的格式
NaN	Float	NaN是numpy\pandas下,Not a Number的简称。
NaT	Datatime	非时间空值
“”空字符串
删除dataframe中空值
df.dropna(axis=0,how='any',thresh=None,subset=None,inplace=True)
#DataFrame.dropna(axis = 0,how = 'any',thresh = None,subset = None,inplace = True)#去掉空值,
#axis=0代表删除0值的行,1代表删除0值对应列;any或all,any代表存在一个空值就删除,all指全部行或列为空才删除;thresh=2,代表至少2个空值作为删除门槛;#subset=['name'],代表在‘name’列查找空值删除;inplace为bool值,True or False ,是否覆盖原来的值;

删除dataframe中的行与列

删除行或列语句:
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
labels:要删除的索引或列标签,需要与axis=1连用才能删除列;
axis=0(删除行)或1(删除列),
index=后面输入需要删除的行标签,columns后面输入列标签,均单独用,无需labels和axis参数;
level代表删除级别,对于MultiIndex,将删除对应级别行;inplace,为False则返回副本,为True执行就地操作并返回无;
    errors:{'ignore''raise'},默认为'raise',如果'ignore',则抑制错误,仅删除现有标签。
删除行列例子

#建立一个表
df = pd.DataFrame(np.arange(12).reshape(3, 4),
                  columns=['A', 'B', 'C', 'D'])
#删除列,需要注明axis=1或者是columns=xxx
#一种表达
df.drop(['B', 'C'], axis=1)
#另一种表达
df.drop(columns=['B', ‘C’])#最直观简便
#还可以这样表达
df.drop(labels=['B', 'C'], axis=1)

c=df.iloc[[0,1],:]   #对行、列进行切片  保留第1、2行
df.drop([0, 1])
df['name'] = df['name'].map(str.strip)清除字段的空格

rename() 函数对列进行重命名df.rename(columns={'name': 'name_new'})
将某一列中的具体值进行替换df['name'].replace('laow', 'lwsbc')
df.loc[df[‘侯智先列’] == ‘侯智先值‘] = 侯智先替换值

#新建一个复合索引的表
midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],
                             ['speed', 'weight', 'length']],
                     codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
                            [0, 1, 2, 0, 1, 2, 0, 1, 2]])
df = pd.DataFrame(index=midx, columns=['big', 'small'],
                  data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
                        [250, 150], [1.5, 0.8], [320, 250],
                        [1, 0.8], [0.3, 0.2]])
print(df)
#删除行,方法一用labels与axis默认为0表示
df.drop(labels='lama',axis=0)
df.drop(labels='length', level=1)#行用labels
方法二:用index表示
df.drop(index='lama’)#最简便
方法三用:行标签,axis=0指定行
df.drop('lama’)#此处省略了axis=0
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sirhzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值