Python处理Excel

openpyxl模块


安装:pip install openpyxl

打开工作簿 load_workbook(文件名)


获取工作表 workbook[sheet名称]

      活动表,当前选中的表workbook.active


获取表格尺寸 sheet.dimensions


获取表格内某个格子的数据 sheet['A1']

        获取一系列的单元格sheet['A1:A5']   sheet['A:C']  sheet['A']  sheet[5]   sheet.rows获取所有的行  sheet.columns获取所有的列

按列获取  .iter_rows(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最低列数)

按行获取  .iter_cols(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最低列数)

获取行号

        for col in cols:

                   print(str(col.row))


import openpyxl
#打开一个Excel表格
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
#获取所有的sheet信息
print(workbook.sheetnames)
#workbook[sheet名称]   活动表,当前选中的表workbook.active
sheet=workbook['理科']
#sheet=workbook.active
#查看工作表尺寸
print(sheet.dimensions)
cells=sheet['B:C']
#元组类型要遍历
# print(cells)
# for cell in cells:
#     #print(cell.value)#会报错((,)...)  print(cells)  元组里面还有一个元组
#     #print(cell[0].value)
#     print(cell.value)
print(len(cells))#看大元组里面有几个小元组
for cell in cells: #一列是一个元组合起来是一个大元组,得到的是列
    for ce in cell: #遍历这个列,输出单元格
        print(ce.value)
import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
cols=sheet.iter_cols(min_row=1,max_row=6,min_col=2,max_col=10)
for col in cols:
    for cell in col:
        print(cell.value)
    print('*'*30)

向某个格子写入内容 sheet['A1']='懒羊羊'

用某个格子写入内容 cell.value='懒羊羊'

使用Python列表数据插入一行 sheet. append(python列表)   一行内容

lst=['姓名','分数']

sheet.append(lst)

插入一列 .insert_cols(id=数字编号)     一列表格

插入多列 .insert_cols(id=数字编号,amount=要插入的列数)

col换成row就是插入行id=数字编号


插入公式 直接赋值公式字符串

from openpyxl.utils import FORMULAE
print(FORMULAE)#含有的Excel公式

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
stu_lst=[
['懒羊羊',20],
['喜羊羊',100]
]
for row in stu_lst:
    sheet.append(row)
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.Workbook()#创建一个新的Excel文件
sheet=workbook.create_sheet()#创建一个工作表
sheet['A1']='懒羊羊'
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet['B5']='=sum(B3:B4)'
workbook.save('新表.xlsx')

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.insert_cols(idx=1)  #在第一列前插入
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.insert_cols(idx=2,amount=3)  #在第二列之前插入三列
workbook.save('新表.xlsx')

删除列.delete_cols(idx=数字编号,amount=要删除的列数)   (行  col改为row)

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.delete_cols(idx=1,amount=3)  #从第一列开始包括第一列,删除四列
workbook.save('新表.xlsx')

移动格子

sheet.move_range('A3:B8',row=3,col=-2)   正数是向下或右

#把A3到B8的数据看成一个整体,移动3行,2列


创建新的sheet

workbook.create_sheet(sheet名称)

删除一个sheet

workbook.remove(sheet名称)

复制一个sheet

workbook.copy_worksheet(sheet名称)

修改表格名称

sheet.title

import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
print(workbook.sheetnames)  #查看所有的sheet名称
workbook.create_sheet('羊村')  #创建新的sheet
print(workbook.sheetnames)
#获取要删除的工作表的对象
sheet=workbook['羊村']
workbook.remove(sheet)#删除
#获取要复制的工作表的对象
sheet=workbook['文科']
workbook.copy_worksheet(sheet)#复制
#改名字
sheet=workbook['文科']
sheet.title='wenke'
print(workbook.sheetnames)
workbook.save('高一总成绩.xlsx')

冻结窗格sheet.freeze_panes='A2'  从第二行第一列开始冻结

import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
sheet.freeze_panes='B2'
workbook.save('高一总成绩.xlsx')

添加筛选sheet.auto_filter.ref=sheet.dimensions

import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
sheet.auto_filter.ref=sheet.dimensions   #dimensions Excel表的一个范围
workbook.save('高一总成绩.xlsx')

调整字体与样式

Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)

获取表格中字体的样式 cell.font.属性

设置对齐样式Alignment(horizontal=水平对齐方式,vertical=垂直对齐方式,text_rotation=旋转角度,wrap_text是否换行)


import openpyxl
from openpyxl.styles import Font
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet["A1"]='懒羊羊'
cell=sheet["A1"]
font=Font(name='微软雅黑',size=20,bold=True,italic=False,color='ff0000')#ff0000是红色
cell.font=font
workbook.save('新表.xlsx')
import openpyxl
from openpyxl.styles import Font
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
font=cell.font
print(font.name)
import openpyxl
from openpyxl.styles import Alignment
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
algin=Alignment(horizontal='center',vertical='center')
cell.alignment=algin
workbook.save('新表.xlsx')

设置边框样式

Side(style=边线样式,color=边线颜色)

Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)

import openpyxl
from openpyxl.styles import Side,Border
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
side=Side(style='thin',color='ff0000')#设置线条的形状和颜色
border=Border(left=side,right=side,top=side,bottom=side)
cell.border=border
workbook.save('新表.xlsx')

设置填充样式

PatternFill(fill_type=填充样式,fgColor=填充颜色)

GradientFill(stop=(渐变色1,渐变色2,,...))

import openpyxl
from openpyxl.styles import PatternFill,GradientFill
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
#纯色
cell=sheet["B2"]
pattern_fill=PatternFill(fill_type='solid',fgColor='ffff00')
cell.fill=pattern_fill
#渐变色
cell=sheet["D2"]
grad=GradientFill(stop=('ff00ff','00ff00'))
cell.fill=grad
workbook.save('新表.xlsx')

设置行高和列宽

.row_dimensions[行编号].height=行高

.column_dimensions[列编号].width=列宽    列的编号ABCD

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.row_dimensions[2].height=50
sheet.column_dimensions['B'].width=50
workbook.save('新表.xlsx')

合并单元格

.merge_cells(待合并的格子编号)

.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

取消合并单元格 .unmerge_cells(...和上面的一样...),前面加个un就行了

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
#sheet.merge_cells(start_row=4,start_column=4,end_row=6,end_column=6)
sheet.merge_cells("D1:G2")
workbook.save("新表.xlsx")

生成图表

输入pip install Pillow显示需要更新,按照指令python -m pip install --upgrade pip进行更新

#这个要先看看,Pillow更新没

插入图片 openpyxl.drawing.image

sheet.add_image

import openpyxl
from openpyxl.drawing.image import Image
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook.create_sheet('imagesheet')
#创建图片对象
bizhi=Image('壁纸.png')
bizhi.height=1200
bizhi.width=1920
sheet.add_image(bizhi,'A1')
workbook.save("新表.xlsx")

插入柱状图

BarChart()   Reference——范围

from openpyxl.chart import BarChart,Reference
workbook=openpyxl.load_workbook('柱状图和条形图.xlsx')
sheet=workbook['多列数据的柱状图']
#创建柱状图的图表对象
chart=BarChart()
#数据的引用范围-图表数据
data=Reference(worksheet=sheet,min_row=1,max_row=5,min_col=1,max_col=2)
#类别的应用范围-表名称
categories=Reference(sheet,min_row=2,max_row=5,min_col=1,max_col=1)
#将数据与类别添加到图表中
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
#将图表插入工作表中
sheet.add_chart(chart,'F12')

workbook.save("柱状图和条形图.xlsx")

条形图

LinChart()

chart.add_data(data,from_rows=True,titles_from_data=True)

练习

import openpyxl
import datetime
#设置字体,对齐方式,边框的样式,边框
from openpyxl.styles import Font,Side,Border,Alignment
#设置字体样式
font1=Font(name='宋体',size=20,bold=True,color='ff0000')
font2=Font(name='宋体',size=20,bold=True)
font3=Font(name='宋体',size=14,bold=False)
font4=Font(name='Times New Roman',size=12,bold=False)
#设置对齐方式
alignment=Alignment(horizontal='center',vertical='center',wrap_text=True)
#设置线性
side=Side(style='thick',color='000000')
#边框
border=Border(left=side,right=side,top=side,bottom=side)
#选择需要缩进的代码块
'''
Tab :集体向右缩进
Shift + Tab :集体向左回缩
'''

#加载Excel文件
workbook=openpyxl.load_workbook(r'C:\Users\hff\Desktop\大班.xlsx')
#指定工作表
sheet=workbook['Sheet1']
#获取指定单元格的值
a1_value=sheet['A1'].value
h2_value=datetime.date(2021, 12, 20)
#print(h2_value)
#获取指定行
rows=sheet[3]
lst_value=[]
#遍历元组得到每一个单元格
for cell in rows:
    lst_value.append(cell.value) #获取第三行的值
#将表头部分写入新的Excel文件中
for i in range(4,34):
    #标题
    write_workbook=openpyxl.Workbook()#创建Excel
    write_sheet=write_workbook.active#获取当前活动的表
    #合并单元格
    write_sheet.merge_cells(start_row=1,end_row=1,start_column=1,end_column=10)
    write_sheet.merge_cells(start_row=2,end_row=2,start_column=8,end_column=10)
    #设置行高
    write_sheet.row_dimensions[1].height=25
    write_sheet['A1']=a1_value
    write_sheet["A1"].font=font2
    write_sheet["A1"].alignment=alignment
    #第二行
    write_sheet['H2']=h2_value
    write_sheet["H2"].font=font4
    write_sheet["H2"].alignment=alignment
    #第三行
    write_sheet.append(lst_value)
    three_rows=write_sheet[3]
    for cell in three_rows:
        cell.font=font3
        cell.alignment = alignment
        cell.border=border
    write_sheet.row_dimensions[3].height=20
    #设置列宽
    thr_rows=write_sheet[3]
    for col in thr_rows:
        #print(col.column_letter)#获取列的字母
        write_sheet.column_dimensions[col.column_letter].width=10

    #添加数据
    write_sheet["A4"].value=sheet['A'+str(i)].value
    write_sheet["B4"].value=sheet['B'+str(i)].value
    write_sheet["C4"].value=sheet['C'+str(i)].value
    write_sheet["D4"].value=sheet['D'+str(i)].value
    write_sheet["E4"].value=sheet['E'+str(i)].value
    write_sheet["F4"].value=sheet['F'+str(i)].value
    write_sheet["G4"].value=sheet['G'+str(i)].value
    write_sheet["H4"].value=sheet['H'+str(i)].value
    write_sheet["I4"].value=sheet['I'+str(i)].value
    write_sheet["J4"].value='=SUM(D4:I4)'
    #居中
    for_row=write_sheet[4]
    for cell in for_row:
        cell.alignment=alignment
        cell.border=border
    #保存
    write_workbook.save('C:\\Users\\hff\\Desktop\\成绩单\\'+str(write_sheet["C4"].value)+write_sheet["B4"].value+'.xlsx')

pandas模块


#报错的话,先卸载xlrd,安装低版本的pip install xlrd==1.2.0  

创建Excel

import pandas as pd
df=pd.DataFrame({'Id':[1,2,3],'name':['懒羊羊','喜羊羊','沸羊羊']})#创建Excel
df=df.set_index('Id')#把ID设置为索引
print(df)
df.to_excel(r'C:\Users\hff\Desktop\实验.xlsx')#保存Excel

读取exccel

import pandas as pd
fenshu=pd.read_excel('分数.xlsx')
#表格大小
print(fenshu.shape)
#列名
print(fenshu.columns)
#看看文件的前几行,默认前五行
print(fenshu.head(3))#看前三行
print(fenshu.tail(3))#看末尾三行,列名是不消失的
#Excel表里面有废弃的第一行(有无用的数字)
import pandas as pd
print(fenshu.columns)
fenshu=pd.read_excel('分数.xlsx',header=1)#header默认是0对应Excel第一行
print(fenshu.columns)
------------------------------------------------------------------
##Excel表里面有空白的第一行
print(fenshu.columns) #能正确识别列名,自动把空行跳过去了
#没有列名
import pandas as pd
print(fenshu.columns)
fenshu=pd.read_excel('分数.xlsx',header=None)
print(fenshu.columns)#自动生成整数从0开始
fenshu.columns=['学号','姓名','总分']#添加列名
fenshu.set_index('学号',inplace=True)
fenshu=fenshu.set_index('学号')#和上面的一样
fenshu=pd.read_excel('分数.xlsx',index_col='学号')

   index和columns是分开对待的

行,列,单元格

import pandas as pd

d={'x':100,"y":200,"z":300}
print(d.keys())
print(d.values())
print(d['x'])

s1=pd.Series(d)   #x,y,z转成index
print(s1)
print(s1.index)
#print(s1.data)#已经不用了


fenshu=[90,80,20]
name=['喜羊羊','沸羊羊','懒羊羊']
s2=pd.Series(fenshu,index=name) 
print(s2)
import pandas as pd
s1=pd.Series([10,20,28],index=['数学','语文','体育'],name='懒羊羊')
s2=pd.Series([60,60,100],index=['数学','语文','体育'],name='沸羊羊')
s3=pd.Series([100,100,100],index=['数学','语文','体育'],name='喜羊羊')

df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)
    懒羊羊  沸羊羊  喜羊羊
数学   10   60  100
语文   20   60  100
体育   28  100  100


df=pd.DataFrame([s1,s2,s3])#用列表,index是在一行
print(df)

      数学   语文   体育
懒羊羊   10   20   28
沸羊羊   60   60  100
喜羊羊  100  100  100

进程已结束,退出代码 0

自动填充

import pandas as pd
from datetime import date,timedelta
books=pd.read_excel('分数.xlsx',skiprows=3,usecols="A,B,C",index_col=None,dtype={'ID':str,'分数':str,'日期':str})
#跳过前面的三行和A,B,C三列 , 'A:C'也行,dtype=['ID':str]把ID换成整数,写int它不会让你把nan转成int类型
start=date(2021,1,1)
for i in books.index:
    books['ID'].at[i]=i+1
    books['分数'].at[i]='yes'if i%2==0 else 'no'
    books['日期'].at[i]=start
print(books)
import pandas as pd
from datetime import date, timedelta


def add_month(d, md)
    yd = md // 12
    m = d.month + md % 12
    if m != 12:
        yd += m // 12
        m = m % 12
    return data(d.year + yd, m, d.day)


books = pd.read_excel('分数.xlsx', skiprows=3, usecols="A,B,C", index_col=None, dtype={'ID': str, '分数': str, '日期': str})
# 跳过前面的三行和A,B,C三列 , 'A:C'也行,dtype=['ID':str]把ID换成整数,写int它不会让你把nan转成int类型
start = date(2021, 1, 1)
for i in books.index:
    books['ID'].at[i] = i + 1
    books['分数'].at[i] = 'yes' if i % 2 == 0 else 'no'
    books['日期'].at[i] = start + timedelta[days = i]  # 加天
    books['日期'].at[i] = data[start.year + i, start.month, start.day]  # 加年

print(books)
books.set_index('ID', inplace=True)
books.to_excel('xxx.xlsx')

函数填充,计算列

import pandas as pd
books=pd.read_excel('文件.xlsx',index_col='ID')
books['结果列']=books['乘数列1']*books['乘数列2']
books['结果列']=books['乘数列1']*0.36
print(books)
-------------------------------------------------
for i in books.index:
    books['结果列']=books['乘数列1'].at[i]*books['乘数列2'].at[i]#单元格相乘
-------------------------------------------------
def add_2(x):
    return x+2
books['数列1']=books['数列1'].apply(add_2)#结果+2

排序

import pandas as pd
fenshu=pd.read_excel('分数.xlsx',index_col='ID')
fenshu.sort_values(by="总分",inplace=True,ascending=True)#替换当前表,从小到大排序
print()
#先排总分,再排语文
fenshu.sort_values(by=["总分",'语文'],inplace=True,ascending=[True,Flase])

数据的筛选和过滤

import pandas as pd
def yuwen_fenshu_0_to_60(a):
    return a>=0and a<60
def shuxue_fenshu_80_to_100(a):
    return a>=80and a<=100
students=pd.read_excel('C:\\Users\\hff\\Desktop\\大班.xlsx',skiprows=2)
#报错的话,先卸载xlrd,安装低版本的pip install xlrd==1.2.0   

students=students.loc[students['语文'].apply(yuwen_fenshu_0_to_60)].loc[students['数学'].apply(shuxue_fenshu_80_to_100)]

print(students)

数据可视化


单柱状图

import pandas as pd
import matplotlib.pyplot as plt
students=pd.read_excel('C:\\Users\\hff\\Desktop\\大班.xlsx',skiprows=2)
# students.plot.bar(x='姓名',y='数学',color='orange',title='数学成绩')
plt.bar(students.姓名,students.数学)
plt.xticks(students.姓名,rotation='90')
plt.xlabel('姓名')
plt.ylabel('数学')
plt.title('数学分数',fontsize=16)

#汉字显示乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.show()#展示图
plt.tight_layout()#紧凑型布局

多柱状图

import pandas as pd
import matplotlib.pyplot as plt
students=pd.read_excel('C:\\Users\\hff\\Desktop\\大班.xlsx',skiprows=2)
students.plot.bar(x='姓名',y=['数学','语文'],color=['orange','red'],title='数学成绩')
plt.xlabel('姓名',fontweight='bold')
plt.title('数学分数',fontsize=16)
ax=plt.gca()#拿到轴
ax.set_xticklabels(students['姓名'],rotation=45,ha='right')#默认旋转是按着文字的中心旋转,ha='right'按右边对齐
f=plt.gcf()#拿到图
f.subplots_adjust(left=0.2,bottom=0.42)#调整布局
#汉字显示乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.show()#展示图


students.plot.bar(x='姓名',y=['数学','语文'],stacked=True,color=['orange','red'],title='数学成绩')
旋转students.plot.barh(x='姓名',y=['数学','语文'],stacked=True,color=['orange','red'],title='数学成绩')

饼图

students.分数 ——汉字可以  ,数字就不行

import pandas as pd
import matplotlib.pyplot as plt
students=pd.read_excel('C:\\Users\\hff\\Desktop\\饼图.xlsx',index_col='时间')
students['2017'].sort_values(ascending=True).plot.pie(fontsize=18,startangle=90)
#startangle从那开始
#students['2017'].sort_values(ascending=True).plot.pie(fontsize=18,counterclock=Flase)
#counterclock顺时针
#汉字显示乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()#展示图

日期要改成字符


折线图

index_col='日期'

students.plot(y=['花费','收入'])


叠加区域图

students.plot.area(y=['花费','收入'])


散点图

pandas.options.diplay.max_columns=777  #显示所有列

students.plot.scatter(x='身高',y='体重')

分布图

import pandas as pd
import matplotlib.pyplot as plt
students=pd.read_excel('C:\\Users\\hff\\Desktop\\散点图.xlsx')
students.体重.plot.hist(bins=50)#50个桶(组)
plt.xticks(range(30,int(max(students.体重)),2),fontsize=8,rotation=90)
#汉字显示乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()#展示图

学生体重为70千克有0.2%的可能性 

Python处理Excel_第1张图片

import pandas as pd
import matplotlib.pyplot as plt
students=pd.read_excel('C:\\Users\\hff\\Desktop\\散点图.xlsx')
# students.体重.plot.hist(bins=50)#50个桶(组)
# plt.xticks(range(30,int(max(students.体重)),2),fontsize=8,rotation=90)
students.体重.plot.kde()
plt.xticks(range(30,int(max(students.体重)),2),fontsize=8,rotation=90)
#汉字显示乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()#展示图

print(students.corr())#相关性


多表联合

excel

VLOOKUP(要填的地方,选择区域,选择要填的东西,false)    false不用临近点插值

IFNA(NA,0)  ,NA的话用0来顶替

python

import pandas as pd

students=pd.read_excel('文件1.xlsx',sheet_name='sheet1')
scores=pd.read_excel('文件1.xlsx',sheet_name='sheet2')

table=students.merge(scores,how='left',left_on='ID',rihght_on='ID').fillna(0)
table.Score=table.Score.astype(int)#转换为整数
#how='left'不管条件成立不成立,左边表的数据都要保存
print(table)
import pandas as pd

students=pd.read_excel('文件1.xlsx',sheet_name='sheet1',index_col='ID')
scores=pd.read_excel('文件1.xlsx',sheet_name='sheet2',index_col='ID')

table=students.join(scores,how='left',on='ID').fillna(0)
table.Score=table.Score.astype(int)#转换为整数
#how='left'不管条件成立不成立,左边表的数据都要保存
print(table)

数据校验

数据,数据有效性

import pandas as pd

def score_validation(row):
    if not 0<=row.Score<=100:
        print(f'#{row.ID}\t{row.Name}是无效的分数{row.Score}.')
student=pd.read_excel('文件.xlsx')
students.apply(score_validation,axis=1)#axis 0表示列,1表示行

数据分裂

import pandas as pd

employees=pd.read_excel('文件.xlsx',index_col="ID")
df = employees['FULL NAME'].str.split(' ',n=2,expand=True)
employees['FULL NAME']=df[0]
employees['FULL NAME']=df[1].str.upper()
print(employees)

求和

import pandas as pd

student=pd.read_excel('文件.xlsx')

temp=students[['语文'],['数学']]
result=temp.sum(axis=1)
row_mean=temp.mean(axis=1)
students['Total']=result
students['AVERAGR']=row_mean
col_man=students[['语文'],['数学']].mean()
col_mean['name']='Summary'
students=students.append(col_man,ignore_index=True)

消除重复项

students.drop_duplicates(subset=['id','name'],inpalce=True,keep='last')

找到重复数据

dupe = students.duplicated(subset='Name')

print(dupe.any())  #查看里面有没有True


dupe = students.duplicated(subset='Name')

dupe =dupe[dupe == True]

print(dupe)

print(students.iloc[dupe.index])


旋转

复制,粘贴,就可以旋转

table= students.transpose()

pd.options.display.max_columns=111#显示111行


数据透视表

import pandas

你可能感兴趣的