pandas针对excel处理的实现


Posted in Python onJanuary 15, 2021

本文主要介绍了pandas针对excel处理的实现,分享给大家,具体如下:

pandas针对excel处理的实现

pandas针对excel处理的实现

读取文件

import padas
df = pd.read_csv("")  #读取文件
pd.read_clipboard()  #读取粘贴板的内容
#解决数据显示不完全的问题
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
#获取指定单元格的值
datefirst = config.iloc[0,1]
datename = config.iloc[0,2]
#新建一列two,筛选料号一列的前俩个
sheet["two"] = sheet["料号"].apply(lambda x:x[:2])

数值处理

df["dog"] = df["dog"].replace(-1,0)  #数值替换
#apply理解函数作为一个对象,可以作为参数传递给其它参数,并且能作为函数的返回值
df["price_new"] = df["price"].apply(lambda pri:pyi.lower())  #新列对老列处理
df["pricee"] = df["price"] *2  #新列

获取数据

data = df.head()  #默认读取前行
df = pd.read_excel("lemon.xlsx",sheet_name=["python","student"]) #可以通过表单名同时读取多个
df = pd.read_excel("lemon.clsx",sheet_name=0) 

data = df.values #获取所有的数据
print("获取到所有的值:\n{0}".format(data)) #格式化输出

df = pd.read_excel("lemon.xlsx")
data = df.ix[0].values   #表示第一行,不包含表头
print("获取到所有的值:\n{0}".format(data)) #格式化输出

loc和iloc详解

loc[row,cloumn] 先行后列 : 是全部行或列,一般多行可以用中括号,连续的可以用a:c等
iloc[index,columns] 行索引,列索引,索引都是从0开始,用法是一样的

多行

多行嵌套
df = pd.read_excel("lemon.xlsx")
data = df.loc[1,2]  #读取指定多行的话,就要在ix[]里面嵌套列表指定行数
print("获取到所有的值:\n{0}".format(data)) #格式化输出

多行
df=pd.read_excel('lemon.xlsx')
data=df.ix[1,2]#读取第一行第二列的值,这里不需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

多行多列嵌套
df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2],['title','data']].values#读取第一行第二行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

获取所有行和指定列
df=pd.read_excel('lemon.xlsx')
data=df.ix[:,['title','data']].values#读所有行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

输出行号和列号

输出行号并打印输出
df=pd.read_excel('lemon.xlsx')
print("输出行号列表",df.index.values)
输出结果是:
输出行号列表 [0 1 2 3]

输出列名并打印输出
df=pd.read_excel('lemon.xlsx')
print("输出列标题",df.columns.values)
运行结果如下所示:
输出列标题 ['case_id' 'title' 'data']

获取指定行数的值
df=pd.read_excel('lemon.xlsx')
print("输出值",df.sample(3).values)#这个方法类似于head()方法以及df.values方法
输出值
 [[2 '输入错误的密码' '{"mobilephone":"18688773467","pwd":"12345678"}']
 [3 '正常充值' '{"mobilephone":"18688773467","amount":"1000"}']
 [1 '正常登录' '{"mobilephone":"18688773467","pwd":"123456"}']]

获取指定值

获取指定列的值
df=pd.read_excel('lemon.xlsx')
print("输出值\n",df['data'].values)

excel数据转字典
df=pd.read_excel('lemon.xlsx')
test_data=[]
for i in df.index.values:#获取行号的索引,并对其进行遍历:
  #根据i来获取每一行指定的数据 并利用to_dict转成字典
  row_data=df.ix[i,['case_id','module','title','http_method','url','data','expected']].to_dict()
  test_data.append(row_data)
print("最终获取到的数据是:{0}".format(test_data))

基本格式化

把带有空值的行全部去除
df.dropna()

对空置进行填充
df.fillna(value=0)
df["price"].fillna(df["price".mean()])

去除字符串两边的空格
df["city"] = df["city"].map(str.strip)

大小写转换
df["city"] = df["city"].map(str.lower)

更改数据格式
df["price"].fillna(0).astype("int")

更改列的名称
df.rename(columns={"category":"category_size"})

删除重复项
df["city"].drop_duplicates()
df["city"].drop_duplicates(keep="last")

数字修改和替换
df["city"].replace("sh","shanghai")

前3行数据
df.tail(3)

给出行数和列数
data.describe()

打印出第八行
data.loc[8]

打印出第八行[column_1]的列
data.loc[8,column_1]

第四到第六行(左闭右开)的数据子集
data.loc[range(4,6)]

统计出现的次数
data[column_1].value_counts()

len()函数被应用在column_1列中的每一个元素上
map()运算给每一个元素应用一个的函数
data[column_1].map(len).map(lambda x : x/100).plot()  plot是绘图


apply()  给一个列应用一个函数

applymap() 会给dataframe中的所有单元格应用一个函数

遍历行和列
for i,row in data.iterrows():
	print(i,row)


选择指定数据的行
important_dates = ['1/20/14', '1/30/14']
data_frame_value_in_set = data_frame.loc[data_frame['Purchase Date']\
.isin(important_dates), :]

选择0-3列
import pandas as pd
import sys

input_file = r"supplier_data.csv"
output_file = r"output_files\6output.csv"

data_frame = pd.read_csv(input_file)
data_frame_column_by_index = data_frame.iloc[:, [0, 3]]
data_frame_column_by_index.to_csv(output_file, index=False)

添加行头
import pandas as pd
input_file = r"supplier_data_no_header_row.csv"
output_file = r"output_files\11output.csv"
header_list = ['Supplier Name', 'Invoice Number', \
'Part Number', 'Cost', 'Purchase Date']
data_frame = pd.read_csv(input_file, header=None, names=header_list)
data_frame.to_csv(output_file, index=False)

数据多表合并

数据合并
1.将表格通过concat()方法进行合并
参数如下:
objs(必须参数):参与连接的pandas对象的列表或字典
axis:指明连接的轴向,默认为0
join:选中inner或outer(默认),其它轴向上索引是按交集(inner)还是并集(outer)进行合并
join_axes:指明用于其他N-1条轴的索引,不执行并集/交集运算
keys:与连接对象有关的值,用于形成连接轴向上的层次化索引
verify_integrity:是否去重
ignore_index:是否忽略索引

合并:
eg:
frames = [df1,df2,df3]
result = pd.concat(frames)
result = pd.concat(frames,keys=["x","y","z"]) #把每张表来个定义

pandas针对excel处理的实现

新增df4表,横向连接到df1表的第2367列,空置补nan
index:是新增的行
axis=1是指列
df4 = pd.DataFrame(["B":["sf"],"D":["'sf],index=[2,3,6,7]])
result = pd.concat([df1,df4],axis=1)

pandas针对excel处理的实现

将df1和df4横向进行交集合并
result = pd.concat([df1,df4],axis=1,join="inner")  列是增加,行是交集

按照df1的索引进行df1表和df4表的横向索引
pd.concat([df1,df4],axis=1,join_axes=[df1.index]) 列是增加,行以df1为准,空的为NaN

通过append()方法连接表格

result = df1.append(df2)
result = df1.append(df4,ignore_index=True) 空格Nan补充

新增一列s1表,并且跟df1进行横向合并
s1 = pd.Series(["1","2","3","4"],name="x")
result = pd.concat([df1,s1],axis=1)   name是列,serise是一维列表,没有name,他会用索引0开始继续填充

pd.concat([df1,s1],axis=1,ignore_index=True)  表格合并后不保留原来的索引列名

将key作为两张表连接的中介
result = pd.merge(left,right,on="key")

result = pd.merge(right,left,on=["key1","key2"])
key1和key2,只要有相同值就行,最后的排列是大的值为key1,小的key2

通过左表索引连接右表
right = pd.DataFrame({"key1":["K0","K2","K1","K2"],
          "key2":["K0","K1","K0","K0"],
          "C":["C0","C1","C2","C3"],
          "D":["D0","D1","D2","D3"]},
		index = ["k0","k1","k2"])
result = left.join(right)   以做索引为基准,right没有左索引的用Nan填充

result = left.join(right,how='outer') how:连接方式

on属性在merge中,以k为中心拼接,有相同的就拼
result = pd.merge(left,right,on="K")

result = pd.merge(left,right,on="K",suffixes=["_l","_r"])  更改拼接后的neme属性

pandas针对excel处理的实现

pandas针对excel处理的实现

pandas针对excel处理的实现

pandas针对excel处理的实现

# 解决显示不完全的问题
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
config = pd.read_excel("C:\\Users\\Administrator\\Desktop\\数据\\文件名配置.xlsx", dtype=object)
datefirst = config.iloc[0, 1]
datename = config.iloc[0, 2]
dateall = datefirst + r"\\" + datename
textfile = config.iloc[1, 1]
textname = config.iloc[1, 2]
textall = textfile + r"\\" + textname

sheet = pd.read_excel(dateall, sheet_name="Sheet2", dtype=object)
sheet["two"] = sheet["料号"].apply(lambda x: x[:2])
# 取出不包含的数据
df = sheet[~sheet["two"].isin(["41", "48"])]
df1 = df[~df["检验结果"].isin(["未验", "试产验证允收"])]
# 删除不需要的列
result = df1.iloc[:, :len(df1.columns) - 1]
# 取出包含的数据
DTR561 = result[result["机种"].isin(["DTR561"])]
DTR562 = result[result["机种"].isin(["DTR562"])]
HPS322 = result[result["机种"].isin(["HPS322"])]
HPS829 = result[result["机种"].isin(["HPS829"])]
writer = pd.ExcelWriter("C:\\Users\\Administrator\\Desktop\\数据\\数据筛选.xlsx")
result.to_excel(writer, sheet_name="全部机种", index=False)
DTR561.to_excel(writer, sheet_name="DTR561", index=False)
DTR562.to_excel(writer, sheet_name="DTR562", index=False)
HPS322.to_excel(writer, sheet_name="HPS322", index=False)
HPS829.to_excel(writer, sheet_name="HPS829", index=False)
writer.save()
print("Data filtering completed")

到此这篇关于pandas针对excel处理的实现的文章就介绍到这了,更多相关pandas excel处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
深入解析Python中的上下文管理器
Jun 28 Python
python列表生成式与列表生成器的使用
Feb 23 Python
Python+Django搭建自己的blog网站
Mar 13 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
python生成带有表格的图片实例
Feb 03 Python
python批量图片处理简单示例
Aug 06 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
Python图像读写方法对比
Nov 16 Python
python tkinter Entry控件的焦点移动操作
May 22 Python
详解Python中的文件操作
Jan 14 #Python
python中的时区问题
Jan 14 #Python
Python截图并保存的具体实例
Jan 14 #Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 #Python
DRF使用simple JWT身份验证的实现
Jan 14 #Python
如何用Python提取10000份log中的产品信息
Jan 14 #Python
python自动生成证件号的方法示例
Jan 14 #Python
You might like
PHP的面试题集
2006/11/19 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
印尼网上商店:Alfacart.com
2019/03/11 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
《乌塔》教学反思
2014/02/17 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Golang解析JSON对象
2022/04/30 Golang