1628人加入学习
(19人评价)
Python数据分析 - Pandas玩转Excel

Python数据分析轻松学

价格 $99美元

任务4:数据区域的读取,填充整数,文字

首先要在pandas环境下读取一个现有的excel文件。

books = pd.read_excel('C:/Temp/Books.xlsx')

当读取的目标文件数据的起始点不在首行和首列的时候,pandas会从Excel的A1单元格开始读取,目标excel中的空白区域在打印时会显示“NaN”即“Not a  Number".  这是我们不想看到的,要想真实的还原目标Excel的内容区域就需要手动改变pandas的读取位置。

手动指定pandas的读取区域

几个关键属性:

skiprows=n: 跳跃n行,即数据从第n+1行开始

usecols="C:F": 内容所在的列区域为excel的C到F

books = pd.read_excel('c:/Temp/Books.xlsx', skiprows=3,usecols='C:F',index_col=None)

注意:这里不指定ID为index的目的是我们后面要对ID的列内容进行写入编辑。

1. 填充ID列

一个DataFrame其每一列其实就是一个Series

验证方法:

print(type(books['ID']))

打印结果:

<class 'pandas.core.series.Series'>

Series 的 at[n] 函数

其中n代表Series里面的第n个元素。

给books里面ID列的第一个元素赋值可以这样写:

books['ID'].at[0] = 100

有了这个函数方法,对于ID列作等差天聪的话我们就可以用 for循环来做:

for i in books.index:
    books['ID'].at[i] = i + 1

注:此时打印出来的ID列值不是整数而是浮点类型。因为之前的空白区域被读取并用NaN填充后被程序自动将属性设置为了float64类型。将ID列修改整数的办法是在读取的时候指定dtype。

books = pd.read_excel('C:/Temp/Books.xlsx', skiprows=3, usecols='C:F', index_col=None,
                      dtype={'ID': str, 'InStore': str, 'Date': str})

注:之所以不用int是因为float无法向int转换。

2. 填充InStore

books['InStore'].at[i] = 'Yes' if i % 2 == 0 else 'No'

3. 填充Date

首先需要调用datetime这个模块,同时引入该模块里的‘date’和‘timedelta’两个类。

设定一个起始日期

start = date(2018, 1, 1)

为每行填充一个相同的日期可以这样写:

books['Date'].at[i] = start

该节的代码入下 :

import pandas as pd
from datetime import date, timedelta

books = pd.read_excel('C:/Temp/Books.xlsx', skiprows=3, usecols='C:F', index_col=None,
                      dtype={'ID': str, 'InStore': str, 'Date': str})

start = date(2018, 1, 1)

for i in books.index:
    books['ID'].at[i] = i + 1
    books['InStore'].at[i] = 'Yes' if i % 2 == 0 else 'No'
    books['Date'].at[i] = start

print(books)

打印结果

    ID      Name InStore        Date
0    1  Book_001     Yes  2018-01-01
1    2  Book_002      No  2018-01-01
2    3  Book_003     Yes  2018-01-01
3    4  Book_004      No  2018-01-01
4    5  Book_005     Yes  2018-01-01
5    6  Book_006      No  2018-01-01
6    7  Book_007     Yes  2018-01-01
7    8  Book_008      No  2018-01-01
8    9  Book_009     Yes  2018-01-01
9   10  Book_010      No  2018-01-01
10  11  Book_011     Yes  2018-01-01
11  12  Book_012      No  2018-01-01
12  13  Book_013     Yes  2018-01-01
13  14  Book_014      No  2018-01-01
14  15  Book_015     Yes  2018-01-01
15  16  Book_016      No  2018-01-01
16  17  Book_017     Yes  2018-01-01
17  18  Book_018      No  2018-01-01
18  19  Book_019     Yes  2018-01-01
19  20  Book_020      No  2018-01-01

 

关于填充日期的递增方法请看下集

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

授课教师

Tim老师

课程特色

视频(30)
下载资料(25)

学员动态

Adamzyf 加入学习
Marstapeworm 加入学习
alpha 加入学习
elllen 完成了 Code for 002
elllen 开始学习 Code for 002