pandas 读取所有表头_Pandas之EXCEL数据读取/保存/文件分割/文件合并

excel的写入函数为pd.DataFrame.to_excel();必须是DataFrame写入excel, 即Write DataFrame to an excel sheet。

pd.to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, 

header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, 

merge_cells=True, encoding=None,inf_rep='inf', verbose=True, freeze_panes=None)
  • test.csv
index,a_name,b_name

0,1,3

1,2,3

2,3,4

3,5

读csv文件

# -*- coding:utf-8 -*-

import pandas as pd

df = pd.read_csv('test.csv')

print(df)

输出

index  a_name  b_name

0      0       1     3.0

1      1       2     3.0

2      2       3     4.0

3      3       5     NaN

读取excel

读取excel主要通过read_excel函数实现,除了pandas还需要安装第三方库xlrd。

'''

pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, 

    names=None,parse_cols=None, parse_dates=False, date_parser=None, na_values=None, 

    thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, 

    true_values=None, false_values=None, engine=None, squeeze=False, **kwds)



该函数主要的参数为io、sheetname、header、names、encoding。

    io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook;

    sheet_name:返回指定的sheet,参数可以是字符串(sheet名)、整型(sheet索引)、

        list(元素为字符串和整型,返回字典{'key':'sheet'})、None(返回字典,全部sheet);

    header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头;

    names:返回指定name的列,参数为array-like对象。

    encoding:关键字参数,指定以何种编码读取。

该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。

'''

df = pd.read_excel('excel_output.xls',sheet_name=None)

# print(df.head())  #看看读取的数据,默认为前5行

print(df['2']) #指定sheet

xls_file=pd.ExcelFile('excel_output.xls')

print(xls_file.sheet_names)#显示出读入excel文件中的表名字

sheet1=xls_file.parse('2')

sheet2=xls_file.parse(0)

print('sheet1:',sheet1)

print('sheet2:',sheet2)

写入excel

写入excel主要通过pandas构造DataFrame,调用to_excel方法实现。

'''

pd.to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, 

    header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, 

    merge_cells=True, encoding=None,inf_rep='inf', verbose=True, freeze_panes=None)

excel_writer:写入的目标excel文件,可以是文件路径、ExcelWriter对象;

sheet_name:表名

na_rep : 缺失值填充

    如果na_rep设置为bool值,则写入excel时改为0和1;也可以写入字符串或数字

    na_rep=True --> 1

    na_rep=False --> 0

    na_rep=3 --> 3

    na_rep='a' --> 'a'

columns :选择输出的的列存入

index:默认为True,显示index,当index=False 则不显示行索引(名字)

header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;

    若数据不含列名,则设定 header = None

index_label:设置索引列的列名

encoding:指定写入编码,string类型。

'''

'''一个excel写入1个sheet'''

df.to_excel('excel_output.xls',sheet_name='2',na_rep=True,columns=['index','b_name'],index=False)

'''一个excel写入多个sheet'''

writer = pd.ExcelWriter('output.xlsx')

# df1 = pd.DataFrame(data={'col1':[1,1], 'col2':[2,2]})

df1 = pd.DataFrame(data=[{'col1':1, 'col2':2},{'col1':3, 'col2':4}])

df1.to_excel(writer,sheet_name='Sheet1')

df1.to_excel(writer,sheet_name='2')

writer.save()

writer.close()

#-------------------------------------------------------

df1 = pd.DataFrame({'Data1': [1, 2, 3, 4, 5, 6, 7]})

df2 = pd.DataFrame({'Data2': [8, 9, 10, 11, 12, 13]})

df3 = pd.DataFrame({'Data3': [14, 15, 16, 17, 18]})

with pd.ExcelWriter('output2.xlsx') as writer:

    df1.to_excel(writer, sheet_name='Data1', startcol=0, index=False)

    df2.to_excel(writer, sheet_name='Data1', startcol=1, index=False)

    df3.to_excel(writer, sheet_name='Data3', index=False)

将一个EXCEL文件分割成多个文件

有时因为一个EXCEL文件的数据量很大,需要分割成多个文件进行处理。这时用Pandas的切片操作即可达到要求。

import pandas as pd

data = pd.read_excel('E:PythonTestCodepublic opinion.xlsx', sheetname='public opinion')

row_num, column_num = data.shape    #数据共有多少行,多少列

print('the sample number is %s and the column number is %s' % (row_num, column_num))

#这里我们的数据共有210000行,假设要让每个文件1万行数据,即分成21个文件

for i in range(0, 21):

    save_data = data.iloc[i*10000+1:(i+1)*10000+1, :] #每隔1万循环一次

    file_name= 'E:PythonTestCodepublic opinionpublic opinion' + str(i) + '.xlsx'

    save_data.to_excel(file_name, sheet_name = 'public opinion', index = False)

分割前的文件是这样

f485e79c174944c01428c4f57447ec32.png

分割后的文件就有这么些了

9a6094e811fe18f7470f3f308ebd8b12.png

将多个EXCEL文件合并成一个文件

分割的文件处理完了我们可能又要把它们合并在一起。这时可以用pandas的concat功能来实现。

import pandas as pd

data0 = pd.read_excel('E:PythonTestCodepublic opinionpublic opinion0.xlsx', sheetname='public opinion')

data1 = pd.read_excel('E:PythonTestCodepublic opinionpublic opinion1.xlsx', sheetname='public opinion')

data = pd.concat([data0, data1])

for i in range(2, 21):

    file_name = 'E:PythonTestCodepublic opinionpublic opinion' + str(i) + '.xlsx'

    data2 = pd.read_excel(file_name)

    data = pd.concat([data, data2])

data.to_excel('E:PythonTestCodepublic opinionpublic opinion-concat.xlsx', index = False)

这样就把所有的文件都合并在了一起。


在Pandas中直接加载MongoDB的数据

import pymongo

import pandas as pd

client = pymongo.MongoClient('localhost',27017)

db  = client['Lottery']

collection = db['Pk10']

data = pd.DataFrame(list(collection .find()))

#删除mongodb中的_id字段

del data['_id']

#选择需要显示的字段

data = data[['date','num1','num10']]

print(data)

参考:https://blog.csdn.net/brucewong0516/article/details/79097909

SnailDM:Pandas与EXCEL之数据读取/保存/文件分割/文件合并

在Pandas中直接加载MongoDB的数据 - snailteam - 博客园

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值