python 读取excel(ZT)



import win32com.client
import os
import time

class Excel:
def __init__(self, filename=None, configuration = None):

self.xApp = win32com.client.Dispatch(' Excel.Application ')
self.Config = configuration

#start info.
#reading configuation file
print "Setting standard font: %s" % self.Config['FONT']
self.xApp.StandardFont = self.Config['FONT']

print "Setting standard size: %s" % str(TextSize)
self.xApp.StandardFontSize = TextSize

#check configuration file
if os.path.exists( self.Config['DATAPATH'] ) :
pass
else:
print "Error: The given data path doesn't exist"
self.close()

# name of report
if filename:
self.Filename = filename
try:
self.xBook = self.xApp.Workbooks.Open(filename)
except:
print "Error: Open file %s failed" % filename
else:

self.xBook = self.xApp.Workbooks.Add()
reportname = self.Config['PROJECT']+ '_R'+ self.Config['VERSION'] + '_' + time.strftime("%Y%m%d") + '_IssueReport'
self.Filename = os.path.join( self.Config['PATH'], reportname)
Name = self.Filename + '.xls'

# if the file exists, rename new file as format oldname(number)
try:
if os.path.exists ( Name ):
number = 2

# test new name
while 1:
Name = self.Filename + "(" + str(number) + ").xls"
if os.path.exists ( Name ):
number += 1
continue
else :
break

self.Filename = self.Filename + "(" + str(number) + ").xls"
print "Given name has been used, rename new report to %s" % self.Filename
else:
self.Filename += '.xls'

print "Report name: %s" % self.Filename
self.xBook.SaveAs( self.Filename )
print "Report file was created"
except:
print "Error: creating file failed"


def save(self, newfilename=None):

print "Saving report to %s" % self.Config['PATH']
if newfilename:
self.Filename = newfilename
self.xBook.SaveAs(newfilename)
else:
self.xBook.Save()
print "Report saved"


def close(self):
self.xBook.Close(SaveChanges=0)
# close error msg
del self.xApp

def show(self):
print "Show generated report"
self.xApp.Visible = 1

def delSheet(self, sheet):
sht = self.xBook.Worksheets(sheet)

try:
sht.Delete()
print "sheet %s is deleted" % sheet
except:
print "Error: Delete sheet %s failed" % sheet

def hide(self):
self.xApp.Visible = 0

# get value from cell
def getCell(self,sheet, row, col):
"Get value of one cell"
sht = self.xBook.Worksheets(sheet)
return sht.Cells (row, col).Value


# set value for cell
def setCell(self, sheet, row, col, value=None, formula=None):

sht = self.xBook.Worksheets(sheet)
if formula :
sht.Cells(row, col).Formula = formula
else:
sht.Cells(row, col).Value = value


# return tuple
def getRange(self, sheet, row1, col1, row2, col2):
"return a 2d array ( i.e. tuple of tuples)"
sht = self.xBook.Worksheets(sheet)
return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value



# set tuple for range
def setRange(self, sheet, topRow, leftCol, data):
'''
set range data from a tuple
'''
if type( data ) == types.TupleType:

bottomRow = topRow + len(data) - 1
rightCol = leftCol + len(data[0]) - 1
length = len(data)
else:
bottomRow = topRow
rightCol = leftCol
length = 1
sht = self.xBook.Worksheets(sheet)

if( length > MaxAccept):
times = length/MaxAccept;
i = 0;
# Multiple * MaxAccept data
while( i < times ):

sht.Range(
sht.Cells (topRow + i*MaxAccept, leftCol),
sht.Cells(topRow + (i+1)*MaxAccept - 1, rightCol)
).Value = data[i*MaxAccept: (i+1)*MaxAccept]

i += 1

# additional data besides Multiple MaxAccept
sht.Range(
sht.Cells(topRow + times * MaxAccept, leftCol),
sht.Cells(bottomRow, rightCol)
).Value = data[times * MaxAccept:]


else:
sht.Range(
sht.Cells(topRow, leftCol),
sht.Cells(bottomRow, rightCol)
).Value = data



# rename a work sheet
def setSheetName(self, sheet, name):
'''
Rename a sheet
'''
sht = self.xBook.Worksheets(sheet)

#logging
print "Rename sheet %s to %s" % ( sheet , name )
sht.Name = name

在面试中,展示使用Python进行数据清洗和预处理的能力时,应当准备好相关的项目经验,并能够清晰地解释所使用的库、函数和过程。Pandas是Python中非常强大的数据分析库,它提供了大量的函数和方法来帮助进行数据清洗和预处理。以下是一个具体的操作流程: 参考资源链接:[Python数据分析面试指南:从入门到精通](https://wenku.youkuaiyun.com/doc/1ere1ii4zt?spm=1055.2569.3001.10343) 首先,确保已经安装了Pandas库。如果尚未安装,可以通过pip安装: ```bash pip install pandas ``` 接着,加载需要处理的数据。通常,数据是以CSV或Excel文件的形式存在。使用Pandas的`read_csv()`或`read_excel()`函数来读取数据: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv('data.csv') ``` 数据清洗的第一步通常是处理缺失值。可以使用`isnull()`和`notnull()`函数来检测缺失值,并使用`dropna()`函数来删除含有缺失值的行或列: ```python # 删除含有缺失值的行 data_cleaned = data.dropna() # 或者,可以选择填充缺失值,例如使用0 data_filled = data.fillna(0) ``` 接下来,处理重复数据也是一个重要的步骤。可以使用`duplicated()`函数检测重复的数据行,并用`drop_duplicates()`函数删除重复项: ```python data_unique = data.drop_duplicates() ``` 数据预处理还包括数据类型转换、数据标准化、离散化等步骤。例如,将某一列的数据类型从字符串转换为浮点数,可以使用`astype()`方法: ```python data['column_name'] = data['column_name'].astype(float) ``` 如果需要对数据进行分组和聚合操作,Pandas提供了`groupby()`和`agg()`函数: ```python grouped_data = data.groupby('grouping_column').agg({'data_column': ['mean', 'sum']}) ``` 此外,还可以进行字符串处理、数据转换为分类数据、数据的排序等操作。例如,使用`str.replace()`方法替换字符串,使用`map()`方法转换数据,使用`sort_values()`方法对数据进行排序: ```python # 替换字符串 data['column_name'] = data['column_name'].str.replace('old_value', 'new_value') # 转换数据 data['column_name'] = data['column_name'].map({'category1': 0, 'category2': 1}) # 排序数据 data_sorted = data.sort_values(by='column_name') ``` 在面试中,通过以上步骤的讲解,可以展示你对Pandas数据处理能力的掌握。同时,为了准备面试,建议查阅《Python数据分析面试指南:从入门到精通》,它包含了面试中常问的问题和面试题大全,可以帮助求职者全面准备数据处理相关的知识和技能。 参考资源链接:[Python数据分析面试指南:从入门到精通](https://wenku.youkuaiyun.com/doc/1ere1ii4zt?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值