pandas针对excel处理(更新)

在这里插入图片描述
在这里插入图片描述

读取文件
import padas
pd.set_option('display.float_format', '{:.0f}'.format)  #禁用科学计数法
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-3import 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"])  #把每张表来个定义

在这里插入图片描述

新增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)

在这里插入图片描述

将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属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 解决显示不完全的问题
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")
  • 102
    点赞
  • 815
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
### 回答1: Python pandas可以通过读取Excel文件,修改其中的内容,然后将修改后的内容写回到Excel文件中。具体步骤如下: 1. 导入pandas库 ```python import pandas as pd ``` 2. 读取Excel文件 ```python df = pd.read_excel('file.xlsx') ``` 3. 修改Excel内容 ```python # 修改第一行第一列的内容为'new value' df.iloc[, ] = 'new value' ``` 4. 将修改后的内容写回到Excel文件中 ```python df.to_excel('file.xlsx', index=False) ``` 以上就是使用Python pandas修改Excel内容的基本步骤。需要注意的是,修改Excel内容时需要先读取Excel文件,然后再修改其中的内容,最后将修改后的内容写回到Excel文件中。 ### 回答2: Pandas库是Python中非常重要的数据分析和处理工具,它可以处理各种格式的数据文件,包括Excel文件。在处理Excel文件时,我们通常需要进行一些修改,例如,修改某些单元格的内容,添加或删除行列等等。下面我们将会详细介绍如何使用Pandas库修改Excel内容。 第一步:安装和导入Pandas库 在使用Pandas库之前,需要先安装Pandas库。我们可以使用pip命令来安装Pandas库。 pip install pandas 安装完成后,我们需要导入Pandas库和Excel文件。 import pandas as pd data=pd.read_excel('example.xlsx') 这样,Excel文件就被读入到Pandas的DataFrame数据结构中。 第二步:修改Excel内容 修改Excel内容的主要思路是,先将DataFrame数据结构中的内容修改完成,然后再将其写入到Excel文件中。我们可以对DataFrame数据结构中的某些单元格进行操作,以修改Excel文件中的内容。 例如,我们可以使用以下代码将Excel文件中第一行、第二列的单元格修改为新值。 data.loc[0,'B']='new value' 这里的loc是Pandas中的一种索引方式,用于定位DataFrame中的某一个位置。第一个参数为行索引,第二个参数为列索引,可以使用数值或者标签进行索引。 还可以使用其他方法修改Excel内容,例如,修改整行、整列、添加新行列等等。这些方法的使用方式与loc类似,需要用到DataFrame的属性和方法。 第三步:写入Excel文件 修改Excel内容完成后,我们需要将修改后的DataFrame内容写回Excel文件中。可以使用以下代码将DataFrame写回Excel中。 data.to_excel('example.xlsx', index=False) 其中,to_excel()方法将DataFrame的内容写入Excel文件,第一个参数为Excel文件的路径和文件名,index参数为是否将DataFrame的索引写入到Excel文件中。index=True则将索引写入Excel文件中,index=False则不写入。 总结 使用Pandas库修改Excel内容的过程就是读入Excel文件,修改DataFrame数据结构中的内容,然后将修改后的DataFrame写回Excel文件的过程。Pandas提供了丰富的方法和函数,可以满足各种不同的需求,可以方便快捷地进行Excel文件的修改和处理。 ### 回答3: 在Python编程中,我们通常需要对Excel进行处理或者修改,而pandas是一个十分强大的Python数据分析库,它提供了DataFrame对象,可以读取和操作数据,同时也提供了一种方法来修改Excel内容。 pandas使用openpyxl库来创建和修改Excel文件。我们需要先安装pandas和openpyxl库: ``` pip install pandas pip install openpyxl ``` 然后我们可以使用以下代码打开Excel文件: ```python import pandas as pd file_path = 'example.xlsx' df = pd.read_excel(file_path) ``` 可以在Dataframe中对Excel文件做出修改,并将修改保存回Excel中: ```python # 修改某一单元格的值 df.iloc[0, 0] = 'new value' # 添加一行 df.loc[len(df)] = ['new value1', 2, 3, 'new value4'] # 保存数据Excel文件 with pd.ExcelWriter(file_path) as writer: df.to_excel(writer, sheet_name='Sheet1', index=False) ``` 除了上述方法之外,我们也可以使用openpyxl自身的方法来修改Excel文件,如下所示: ```python from openpyxl import load_workbook file_path = 'example.xlsx' workbook = load_workbook(file_path) worksheet = workbook['Sheet1'] # 修改某一单元格的值 worksheet.cell(row=1, column=1).value = 'new value' # 在末尾添加一行 row = len(worksheet['A']) + 1 values = ['new value1', 2, 3, 'new value4'] for i, value in enumerate(values): worksheet.cell(row=row, column=i+1, value=value) # 保存数据Excel文件 workbook.save(file_path) ``` 总结起来,想要修改Excel中的内容,可以使用pandas来读取并修改Excel文件,也可以直接使用openpyxl提供的方法来修改Excel文件。具体修改的行为可以根据需要来选择使用哪种方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

͝͝͝͝͝͝͝͝͝͝L Y H

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

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

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

打赏作者

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

抵扣说明:

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

余额充值