
读取数据集:
选取指定的列:选取 DataFrame 的 Age 列。
选取指定的多个列,使用列表索引传入多个列的名称即可:
选取 DataFrame 的 Name 列和 Age 列:
选取 DataFrame 的指定行,有如下两种方式:
选取第一行数据:
使用位置切片,选取前五行内容:
使用位置切片,选取前五行内容的第二列和第三列内容:
首先,为 DataFrame 设置标签索引:将 Name 列设置为索引:
选取标签索引为 'Wirz, Mr Albert' 的行:
使用标签切片选取指定的 DataFrame 行和列:
df['Fare'] > 30 将返回一个布尔类型的 Series :
该布尔类型的 Series 可以作为布尔索引传入 DataFrame :
选取所有 Fare 列大于 30 的 DataFrame 行:
布尔索引也可以配合标签索引,选取指定的 DatFrame 区域:
此外,调用布尔型 Series 的 sum 方法可以获取满足该布尔条件的记录数量:
Python对于Excel的 *** 作是多种多样的,掌握了相关用法就可以随心所欲的 *** 作数据了!
*** 作xls文件
xlrd(读 *** 作):
import xlrd
1、引入xlrd模块
workbook=xlrdopen_workbook("36xls")
2、打开[36xls]文件,获取excel文件的workbook(工作簿)对象
names=workbooksheet_names()
3、获取所有sheet的名字
worksheet=workbooksheet_by_index(0)
4、通过sheet索引获得sheet对象
worksheet为excel表第一个sheet表的实例化对象
worksheet=workbooksheet_by_name("各省市")
5、通过sheet名获得sheet对象
worksheet为excel表sheet名为各省市的实例化对象
nrows=worksheetnrows
6、获取该表的总行数
ncols=worksheetncols
7、获取该表的总列数
row_data=worksheetrow_values(n)
8、获取该表第n行的内容
col_data=worksheetcol_values(n)
9、获取该表第n列的内容
cell_value=worksheetcell_value(i,j)
10、获取该表第i行第j列的单元格内容
xlwt(写 *** 作):
import xlwt
1、引入xlwt模块
book=xlwtWorkbook(encoding="utf-8")
2、创建一个Workbook对象,相当于创建了一个Excel文件
sheet = bookadd_sheet('test')
3、创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheetwrite(i, j, '各省市')
4、向sheet表的第i行第j列,写入'各省市'
booksave('Data\\36xls')
5、保存为Data目录下36xls文件
*** 作xlsx文件
openpyxl(读 *** 作):
import openpyxl
1、引入openpyxl模块
workbook=openpyxlload_workbook("36xlsx")
2、打开[36xlsx]文件,获取excel文件的workbook(工作簿)对象
names=workbooksheetnames
worksheet=workbookworksheets[0]
worksheet=workbook["各省市"]
ws = workbookactive
6、获取当前活跃的worksheet,默认就是第一个worksheet
nrows=worksheetmax_row
7、获取该表的总行数
ncols=worksheetmax_column
8、获取该表的总列数
content_A1= worksheet['A1']value
9、获取该表A1单元格的内容
content_A1=worksheetcell(row=1,column=1)value
10、获取该表第1列第1列的内容
openpyxl(写 *** 作):
workbook=openpyxlWorkbook()worksheet = workbookactive
3、获取当前活跃的worksheet,默认就是第一个worksheet
worksheettitle="test"
4、worksheet的名称设置为"test"
worksheet = workbookcreate_sheet()
5、创建一个新的sheet表,默认插在工作簿末尾
worksheetcell(i,j,'空')
6、第i行第j列的值改成'空'
worksheet["B2"]="空"
7、将B2的值改成'空'
worksheetinsert_cols(1)
8、在第一列之前插入一列
worksheetappend(["新增","台湾省"])
9、添加行
workbooksave("Data\\36xlsx")
10、保存为Data目录下36xlsx文件
pandas处理excel文件
pandas *** 作:
import pandas as pd
1、引入pandas模块
data = pdread_excel('36xls')
2、读取[36xls]或者[36xlsx]文件
data = pdread_csv('36csv')
3、读取[36csv]文件
data=datadropna(subset=['店铺'])
4、过滤掉data店铺列有缺失的数据
datasort_values("客户网名", inplace=True)
5、将data数据按照客户网名列进行从小到大排序
data = pdread_csv(36csv, skiprows = [0,1,2],sep = None, skipfooter = 4)
6、读取[36csv]文件,前三行和后四行的数据略过
data = datafillna('空')
7、将data中的空白处填充成'空'
datadrop_duplicates('订单','first',inplace=True)
8、data中的数据,按照订单列做去重处理,保留第一条数据
data=pdDataFrame(data,columns=['订单','仓库'])
9、只保留data中订单仓库列的数据
data = data[(data[u'展现量'] > 0)]
10、只保留展现量列中大于0的数据
data= data[data["订单"]strcontains('000')]
11、只保留订单列中包含'000'的数据
data= data[data["仓库"]=='正品仓']
12、只保留仓库列是'正品仓'的数据
xs= data[data["店铺"]=='南极人']['销售额']
13、获取店铺是南极人的销售额数据
data['订单'] = data['订单']str[3:7]
14、订单列的值只保留4-8个字节的值
data["邮资"] = npwhere((data['店铺']strcontains('T|t')) & -(data['仓库'] == '代发仓'), 8, data['邮资'])
15、满足店铺列包含 T 或 t 并且仓库不等于'代发仓'的话,将邮资的值改成8,否则值不变
data = nparray(data)tolist()
16、将data从DataFrame转换成列表
data=pdDataFrame(data)
17、将列表转换成DataFrame格式
zhan = data[u'展现']sum()round(2)
18、将data中所有展现列数据求和,并取两位小数
sum=datagroupby(['店铺'])['刷单']sum()
19、将data中按照店铺对刷单进行求和
counts=data['店铺']value_counts()
20、将data按照店铺进行计算
avg=datagroupby(['店铺'])['刷单']mean()
21、将data按照店铺对刷单进行求平均数
count = pdconcat([counts,sum], axis=1, ignore_index=True, sort=True)
22、将counts和sum两个DataFrame进行了组合
count=countrename(index=str, columns={0: "订单", 1: "成本"})
23、将新生成的DataFrame列名进行修改
data = pdmerge(sum, counts, how='left', left_on='店铺', right_on='店铺')
24、将列表转换成DataFrame格式
from openpyxl import Workbook
wb=Workbook()
ws1=wbactive
datato_excel('36xlsx')
wbclose()
25、data完整的写入到关闭过程,执行此 *** 作的时候36xlsx不能是打开状态
excel格式 *** 作
样式处理:
1、打开36xlsx
sheet=workbookworksheets[0]
2、将第一个sheet对象赋值给sheet
sheetcolumn_dimensions['A']width = 200
3、将A列的宽度设置为20
sheetrow_dismensions[1]height = 200
4、将第一行的行高设置为20
sheetmerge_cells('A1:A2')
5、将sheet表A1和A2单元格合并
sheetunmerge_cells('A1:A2')
6、将sheet表A1和A2单元格取消合并
sheetinsert_rows(2,2)
7、将sheet表从第2行插入2行
sheetinsert_cols(3,2)
8、将sheet表从第3列插入2列
sheetdelete_rows(2)
9、删除第2行
sheetdelete_cols(3, 2)
10、将sheet表从第3列开始删除2列
from openpyxlstyles import Font, Border, PatternFill, colors, Alignment
11、分别引入字体、边框、图案填充、颜色、对齐方式
sheetcell(i,j)font = Font(name='Times New Roman', size=14, bold=True, color=colorsWHITE)
12、设置sheet表第 i 行第 j 列的字体
sheetcell(i,j)alignment = Alignment(horizontal='center', vertical='center')
13、设置sheet表第 i 行第 j 列的字体对齐方式
left, right, top, bottom = [Side(style='thin', color='000000')] 4sheetcell(i,j)border = Border(left=left, right=right, top=top, bottom=bottom)
14、引入边框样式并调用
fill = PatternFill("solid", fgColor="1874CD")sheetcell(1,j)fill = fill
15、引入填充样式,并调用
import xlrd
from openpyxl import Workbook
from openpyxl import load_workbook
workbook=load_workbook(filename='C:/Users/EDZ/Desktop/工作/20210803/大兄弟xlsx')
sheet=workbookactive
sheetinsert_cols(idx=1)
sheetmerge_cells(A1:A3)
sheet['A1']=['上海','山东','浙江']
DataFrame对象:二维表数据结构,由行列数据组成的表格
常用index表示行,columns表示列
'''
语文 数学 英语
0 110 105 99
1 105 88 115
2 109 120 130
'''
# print(dfcolumns) # Index(['语文', '数学', '英语'], dtype='object')
# print(dfindex) # Int64Index([0, 1, 2], dtype='int64')
# 遍历DataFrame数据的每一列
'''
0 110
1 105
2 109
Name: 语文, dtype: int64
0 105
1 88
2 120
Name: 数学, dtype: int64
0 99
1 115
2 130
Name: 英语, dtype: int64
'''
1创建一个DataFrame对象
pandasDataFrame(data,index,columns,dtype,copy)
# data表示数据,可以是ndarray数组,series对象、列表、字典等
# index表示行标签(索引)
# columns表示列标签(索引)
# dtype每一列数据的数据类型
# copy用于复制数据
# 返回值DataFrame
通过二维数组创建成绩表
'''
语文 数学 英语
0 110 105 99
1 105 88 115
2 109 120 130
'''
2通过字典创建DataFrame对象
value值只能是一维数组或单个的简单数据类型
# 数组,则要求所有的数组长度一致
# 单个数据,每行都需要添加相同数据
'''
语文 数学 英语 班级
0 110 105 109 高一7班
1 105 88 120 高一7班
2 99 115 130 高一7班
'''
'''
DataFrame属性
values 查看所有元素的值 dfvalues
dtypes 查看所有元素的类型 dfdtypes
index 查看所有行名、重命名行名 dfindex dfindex=[1,2,3]
columns 查看所有列名、重命名列名 dfcolumns dfcolumns=['语','数']
T 行列数据转换 dfT
head 查看前n条数据,默认5条 dfhead() dfhead(10)
tail 查看后n条数据,默认5条 dftail() dftail(10)
shape 查看行数和列数,[0]表示行,[1]表示列 dfshape[0] dfshape[1]
info 查看索引,数据类型和内存信息 dfinfo
DataFrame函数
describe 查看每列的统计汇总信息,DataFrame类型 dfdescribe()
count 返回每一列中的非空值的个数 dfcount()
sum 返回每一列和和,无法计算返回空值 dfsum()
max 返回每一列的最大值 dfmax()
min 返回每一列的最小值 dfmin()
argmax 返回最大值所在的自动索引位置 dfargmax()
argmin 返回最小值所在的自动索引位置 dfargmin()
idxmax 返回最大值所在的自定义索引位置 dfidxmax()
idxmin 返回最小值所在的自定义索引位置 dfidxmin()
mean 返回每一列的平均值 dfmean()
median 返回每一列的中位数 dfmedian()
var 返回每一列的方差 dfvar()
std 返回每一列的标准差 dfstd()
isnull 检查df中的空值,空值为True,否则为False,返回布尔型数组 dfisnull()
notnull 检查df中的空值,非空值为True,否则为False,返回布尔型数组 dfnotnull()
中位数又称中值,是指按顺序排列的一组数据中居于中间位置的数
方差用于度量单个随机变量的离散程序(不连续程度)
标准差是方差的算术平方根,反映数据集的离散程度
'''
3 导入xls或xlsx文件
# pandasread_excel(io,sheetname=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_defalut_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_dupe_cols=True,kwds)
'''
io 字符串,xls或xlsx文件路径或类文件对象
sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为0
字符串用于工作表名称;整数为索引,表示工作表位置
字符串列表或整数列表用于请求多个工作表,为None时则获取所有的工作表
sheet_name = 0 第一个Sheet页中的数据作为DataFrame对象
sheet_name = 1 第二个Sheet页中的数据作为DataFrame对象
sheet_name = 'Sheet1' 名为Sheet1的Sheet页中的数据作为DataFrame对象
sheet_name = [0,1,'Sheet3'] 第一个,第二个和名为Sheet3的Sheet页中的数据作为DataFrame对象
header:指定作为列名的行,默认值为0,即取第一行的值为列名。或数据不包含列名,则为header=None
names:默认值为None,要使用的列名列表
index_col:指定列为索引列,默认值为None,索引0是DataFrame对象的行标签
usecols:int、list或字符串,默认值为None
如为None,则解析所有列
如为int,则解析最后一列
如为list列表,则解析列号和列表的列
如为字符串,则表示以逗号分隔的Excel列字母和列范围列表
squeeze:布尔值,默认为False,如果解析的数据只包含一列,则返回一个Series
dtype:列的数据类型名称为字典,默认值为None
skiprows:省略指定行数的数据,从第一行开始
skipfooter:省略指定行数的数据,从尾部数的行开始
4导入指定Sheet页的数据
# sheet_name=0表示第一个sheet页的数据,以此类推,如果不指定,则导入第一页
5指定行索引导入Excel数据
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
# 导入第一列数据
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
```# -- coding:utf-8 --
import openpyxl
import xlrd
import ospath
import time
workbook1 = openpyxlload_workbook('C:/Users/Administrator/Desktop/汇总xlsx')#提前建一个汇总的表
name_list = workbook1sheetnames #获取提前建一个汇总的表的sheet表名
sheet1 = workbook1[name_list[0]]#取第一个sheet表
sheet1append(['姓名','工资','工资实发','年度'])#给汇总表添加标题,标题名按照提取表的字段来命名
path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置
file_list = oslistdir(path) # 获取这个文件夹下所有的excel文档。
for file in file_list:
if ospathsplitext(file)[1]=='xlsx': #获取所有xlsx的文件
workbook = openpyxlload_workbook(path+file) # 加载已经存在的excel
name_list = workbooksheetnames #获取所有的sheet表名
sheet = workbook[name_list[0]]#取第一个sheet表
#print(sheetdimensions) 获取所有表的范围 A1:O24
cell = sheet['A']
for i in cell:
if ivalue == '序号':
a = irow
print(a)
elif ivalue == '合计':
b = irow
print(b)
#此循环取需要获取的行数范围,其中的A列、序号和合计为起始位置定位
cell1 = sheet[sheetdimensions]
for i in cell1:
for j in i:
if jvalue == '姓名':
e = jcolumn
print(e)
elif jvalue == '工资':
c = jcolumn
print(c)
elif jvalue == '工资实发':
d = jcolumn
print(d)
# 此循环取需要获取的列数,其中的姓名、工资和工资实发为列位置定位
test_case=[]
for row in range(a+2,b):
sub_data={}
sub_data['姓名']=sheetcell(row,e)value
sub_data['工资']=sheetcell(row,c)value
sub_data['工资实发']=sheetcell(row,d)value
#print(list(sub_datakeys()))
ll=list(sub_datavalues())
#print(ll)
test_caseappend(ll)
print (file)
#print("读取到的所有测试用例:",test_case)
# 此循环为将需要获取的列字段对应的行数范围值取出来
max_row = sheet1max_row #取汇总表的行数
print(max_row)
for row in test_case:
sheet1append(row)
# 此循环为 将数据追加到汇总表中
hang = list(range(max_row+1,max_row+b-a-1))
for i in hang:
#print(hang)
sheet1cell(row=i,column=4,value=file)#column=4 需要根据实际情况更改
# 此循环为 生成一列,将表名作为数据追加到列中
workbook1save('C:/Users/Administrator/Desktop/汇总xlsx')
附记
#定位含有某字符串的单元格
cell = sheet['A']
for i in cell:
if ivalue == '序号':
a = irow
print(a)
elif '填表' in str(ivalue): #查找含有填表字符串的位置
b = irow
print(b)
附记
#将非xlsx格式表转成xlsx
path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置
file_list = oslistdir(path) # 获取这个文件夹下所有的excel文档。
for file in file_list:
file_name,suff=ospathsplitext(file)
if suff =='xls':
data=pdDataFrame(pdread_excel(path+"/"+file))
datato_excel(path+"/"+file_name+"xlsx",index=False)
if ospathsplitext(file)[1]=='xlsx': #获取所有xlsx的文件
以上就是关于Pandas - 索引 *** 作全部的内容,包括:Pandas - 索引 *** 作、python对excel *** 作、python数据分析2:DataFrame对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)