理论基础数据分析Python

Pandas操作Excel学习笔记(2)——读取文件

2021-06-17  本文已影响0人  烟月不知

通过Pandas库可以从多种格式的数据文件中读取数据,也可以将处理后的数据写入到这些文件中。pandas库中的pd.read_excel()相较之前的xlrd库的读表操作更加简单,针对一般批量的数据处理选择pandas库操作是不错的选择。

一、读取Excel文件的函数

pd.read_excel(io, sheet_name=0,header=0,skiprows=None,index_col=None,names=None,
                arse_cols=None,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

sheet_name

import pandas as pd
pd.read_excel("要打开的EXCEL文件.xlsx",
                sheet_name = 1)    # 读取EXCEL工作簿中的第二个工作表
pd.read_excel("要打开的EXCEL文件.xlsx",
                sheet_name = “二月”)    # 读取EXCEL工作簿中的工作表名为‘二月’的工作表
pd.read_excel("要打开的EXCEL文件.xlsx",
                sheet_name =None )    # 读取EXCEL工作簿中的所有工作表,是一个表格的字典。
df_dict = pd.read_excel("要打开的EXCEL文件.xlsx",
                sheet_name = [1,“二月”])  #读取EXCEL工作簿中的第二个工作表和表名为‘二月’的工作表
print(df_dict[1])
print(df_dict["二月"])

header

index_col

usecols

skiprows

import pandas as pd
pd.read_excel("要打开的EXCEL文件.xlsx",
                skiprows = [0,2] )    # 跳过索引为0和2的两行,用列表形式表达。

names

names:指定使用的标题行列名列表,如果表格不包含标题行,则应显式传递header = None

dtype

dtype:是一个字典,表示方法{‘列名’:'类型'},用来设置列的数据类型。

# 类型的查看
import pandas as pd
df = pd.read_excel("要打开的EXCEL文件.xlsx")
df.dtypes  # 查看读出数据的数据类型

在这里会发现,字符型数据被识别为 object 类型。需要注意的是不能把int64类型直接转化为str类型,这时可用下列代码进行转换:

df['列名'] = df['列名'].astype('string')

parse_dates

parse_dates:将表中的日期数据转化为日期类型,例如:


未转换前识别出的数据类型
转换后识别出的数据类型

在这里就用到了一个转换,代码如下:

parse_dates = [0,1,2,3,4,5,6]  # 将列索引为0,1,2,3,4,5,6列中的数据转换为日期类型

将多列数据拼接成一个日期格式类型,例如:


年月日分开的数据表

转换代码:

import pandas as pd
df = pd.read_excel("要打开的EXCEL文件.xlsx",parse_dates = [[0, 1, 2]])

以上代码中,不使用索引,使用列名也是可以的,即:

import pandas as pd
df = pd.read_excel("要打开的EXCEL文件.xlsx",parse_dates = [['年', '月', '日']])

还可以使用字典的形式,指定合并后列名,即:

import pandas as pd
df = pd.read_excel("要打开的EXCEL文件.xlsx",parse_dates = {'日期': ['年', '月', '日']})

date_parser

date_parse须与parse_dates配合使用,可将形如以下格式的数据转换为日期格式:


中文格式日期

转换代码如下:

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    parse_dates = [0],
                    date_parser = lambda x: pd.to_datetime(
                    x,format = '%Y年%m月%d日'
                    )
)    # 这里的 parse_dates = [0],用来指定要转换的列

na_values

na_values:识别为NaN(缺失值)的其他字符串。

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    na_values  = 0
) 

将单元格中的字符串 ‘a' 替换为NaN

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    na_values  = 'a'
) 

用列表形式传入,将单元格中的指定值替换为NaN ,如:将单元格中的字符串’a‘,0和空格替换为 NaN

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    na_values  = [ 'a',0,' ']
) 

用字典形式传入,将指定列单元格中的指定值替换为NaN,如:

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    na_values  = {'列名',[ 'a',0,' ']}

converters

converters:是一个值转换函数,默认为None,传入值为一个字典。如:


有格式符号的单元格值

要去掉这些空格符号,就可使用converters进行转换:

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    converters  ={
                    '货号': lambda x: x.strip()
                    }
)
# 也可不用lambda函数:
import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    converters  ={
                    '货号': str.strip
                    }
)

也可以用它来进行一些简单的计算,如:将所有的销量值都加上5

import pandas as pd
df = pd.read_excel(
                    "要打开的EXCEL文件.xlsx",
                    converters  ={
                    '销量': lambda x: x + 5
                    }
)

今天就整理到这里,还有些参数比较简单。不笔记了。

上一篇 下一篇

猜你喜欢

热点阅读