python对excel文件的处理

先列个大纲,有时间慢慢写

1、常用的工具包

2、按行读取,按列读取(按行列号,按行列名)

3、读取某行某列(按行列号,按行列名)

4、写入某行,某列,某一固定位置

5、常见操作,去重、去NA,填充

一、对list的交集,并集,差集处理

a =[1,2,3,4]
b=[2,4,5,6]
#求交集
#方法一
tmp = [val for val in a if val in b]
print tmp
#[2, 4]
#方法二(效率更高)
print list(set(a).intersection(set(b)))
#[2, 4]
#求并集
print list(set(a).union(set(b)))
#[1, 2, 3, 4, 5, 6]
#求差集
print list(set(b).difference(set(a))) # b中有而a中没有的      非常高效!
#[5, 6]

二、行求和、列求和

import pandas as pd
import numpy as np
	
#axis=1表示从左到右计算
#axis=0表示从上到下计算
df = pd.DataFrame(np.random.randn(2, 3), columns=['A', 'B', 'C'])
#计算各列数据总和并作为新列添加到末尾
df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1)
#计算各行数据总和并作为新行添加到末尾
df.loc['Row_sum'] = df.apply(lambda x: x.sum())
#
             A         B         C   Col_sum
0       -0.811697 -0.638478  0.688671 -0.761504
1        1.357440  1.137554  1.526666  4.021660
Row_sum  0.545743  0.499076  2.215337  3.260156
#单独计算某一列的平均值
meanA= df['A'].mean()
print(meanA)
#0.3638287496918416

三、对excel读取后的行列处理

import pandas as pd
#读取excel
filePath = '/Users/zhangfei/Documents/NINE/testdata/dealexcel.xlsx'
df = pd.read_excel(filePath)
dfsheet = pd.read_excel(filePath,sheet_name='学生成绩')
print(df)
print(dfsheet)
#   姓名  语文  数学  英语
0  张三  90  88  90
1  李四  98  79  80
2  王五  85  99  90
3  赵柳  67  96  80
data=df.ix[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦!
#['张三' 90 88 90]
data=df.ix[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数
#[['李四' 98 79 80]
 ['王五' 85 99 90]]
print("输出行号列表",df.index.values)#输出行号列表
#输出行号列表 [0 1 2 3]
print("输出列标题",df.columns.values) #输出列标题
#输出列标题 ['姓名' '语文' '数学' '英语']
print("语文成绩",df['语文'].values)#输出语文列
#语文成绩 [90 98 85 67]
data1=df.ix[df['姓名']=='张三',['语文','数学']].values#读姓名为张三行的title以及data列的值,这里需要嵌套列表
data=df.loc[:,['语文','数学']].values#读所有行的title以及data列的值,这里需要嵌套列表

四、查找文件夹下文件的路径,递归查找和非递归查找

import os,re

dirPath = '/Users/zhang/Documents/NINE/PythonScript/files'
fileList = []
#os.walk在文件夹下递归查找
for root,dir,files in os.walk(dirPath):
    for file in files:
        if file[0]=='.':
            #print(file)
            pass
        elif file[0]=='~':
            #print(file)
            pass
        else:
            f = os.path.join(root,file)
            if re.search('余额', f):
                fileList.append(os.path.join(root,file))
#os.listdir 显示文件夹下的文件,不递归查找
for file in os.listdir(dirPath):
    print(file)
    if file[0] == '.':
        # print(file)
        pass
    elif file[0] == '~':
        # print(file)
        pass
    else:
        f = os.path.join(dirPath,file)
        if re.search('余额', f):
            fileList.append(f)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值