python pandas是如何读取excel表中的sheet的(七)

本期我们继续解读read_excel()中的参数。这个系列可能有点长了,但这些入参有时真的很有用,可以在关键时候迅速的解决问题,网上现有的资料又不足以满足,话不多说,我们继续。今天查看以下几个参数:thousands,convert_float,mangle_dupe_cols。(因为不同的版本可能参数会缺乏,我使用的python发行版本是3.8的)
下面是官方文档给出的释义:

thousands : str, default None
        Thousands separator for parsing string columns to numeric.  
        Note that this parameter is only necessary for columns stored 
        as TEXT in Excel,any numeric columns will automatically 
        be parsed, regardless of display format.
convert_float : bool, default True
        Convert integral floats to int (i.e., 1.0 --> 1). If False, 
        all numeric data will be read in as floats: Excel stores 
        all numbers as floats internally.
mangle_dupe_cols : bool, default True
        Duplicate columns will be specified as 'X', 'X.1', ...'X.N', 
        rather than 'X'...'X'. Passing in False will cause data 
        to be overwritten if there are duplicate names in the columns.

先来看如下excel表格:
python pandas是如何读取excel表中的sheet的(七)_第1张图片
B列和C列是重复的,money列是有千分位的其类型是数值型的,population列也是有千分位的,不同的是population列是text类型,且分隔符是’|’。
1、mangle_dupe_cols 参数

# 该参数默认为True,会对重复列做标记,以下便生成了Chinese.1列
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1')
>>> df
     name  Chinese  Chinese.1   id    money population
0     bob       12         12  123  1000000   1|000|00
1  millor       32         32  124  1900000   1|000|01
2   jiken       89         89  125   200000   1|000|02
3   jiken       89         89  125   200000   1|000|02

2、convert_float

# convert_flat 参数默认为True。由于excel中所有数值在底层默认
# 都是以浮点型的,pandas读取后如果可以将整列解读为int,便会为int。
# 如果convert_float = False则会取消这个机制
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1', convert_float = False)
>>> df
     name  Chinese  Chinese.1   id      money population
0     bob     12.0       12.0  123  1000000.0   1|000|00
1  millor     32.0       32.0  124  1900000.0   1|000|01
2   jiken     89.0       89.0  125   200000.0   1|000|02
3   jiken     89.0       89.0  125   200000.0   1|000|02
>>> df.dtypes
name           object
Chinese       float64
Chinese.1     float64
id              int64
money         float64
population     object
dtype: object

3、thousands

# thousands参数主要是负责千分位相关的解读。该参数仅适用于excel中的text
# 类型且具有千分位,对于数值型的千分位并不适用
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1')
>>> df
     name  Chinese  Chinese.1   id    money population
0     bob       12         12  123  1000000   1|000|00
1  millor       32         32  124  1900000   1|000|01
2   jiken       89         89  125   200000   1|000|02
3   jiken       89         89  125   200000   1|000|02
# money成功解析,但是population却被作为str处理了
>>> df.dtypes
name          object
Chinese        int64
Chinese.1      int64
id             int64
money          int64
population    object
dtype: object

# 当通过thousands参数指定分割符后,成功处理
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', sheet_name='Sheet1', thousands='|')
>>> df
     name  Chinese  Chinese.1   id    money  population
0     bob       12         12  123  1000000      100000
1  millor       32         32  124  1900000      100001
2   jiken       89         89  125   200000      100002
3   jiken       89         89  125   200000      100002

哈哈以上就是python小工具关于这三个参数,至此,我们还剩下两个比较重要的关于时间格式参数的解读,这在实际工作中会经常遇到,下周,我们将通过一周的时间完成这方面的学习。如果有兴趣,欢迎关注公众号:python小工具。让办公变得简单一点。
python pandas是如何读取excel表中的sheet的(七)_第2张图片

你可能感兴趣的:(python pandas是如何读取excel表中的sheet的(七))