通过apply进行数据预处理
2020-08-12 19:36
169 查看
通过apply进行数据预处理
通过apply进行数据预处理
引入相关库
import numpy as np import pandas as pd from pandas import Series,DataFrame
数据获取
读取csv文件,通过head看DataFrame的数据,有两列
df=pd.read_csv('../homework/apply_demo.csv') df.head()
time | data | |
---|---|---|
0 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 |
1 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 |
2 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 |
3 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 |
4 | 1473411963 | Symbol: APPL Seqno: 1 Price: 1649 |
通过size查看多少行
df.size
7978
创建一个新的Series
s1= Series(['a']*7978)
往DataFrame里面添加新的一列’A’
df['A']=s1
df.head()
time | data | A | |
---|---|---|---|
0 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 | a |
1 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 | a |
2 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 | a |
3 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 | a |
4 | 1473411963 | Symbol: APPL Seqno: 1 Price: 1649 | a |
通过apply和str.upper方法,把A这个columns里面所有的元素变成大写
df['A']=df['A'].apply(str.upper) df.head()
time | data | A | |
---|---|---|---|
0 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 | A |
1 | 1473411962 | Symbol: APPL Seqno: 0 Price: 1623 | A |
2 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 | A |
3 | 1473411963 | Symbol: APPL Seqno: 0 Price: 1623 | A |
4 | 1473411963 | Symbol: APPL Seqno: 1 Price: 1649 | A |
数据分割处理
data里面的每个数据有三个元素’Symbol‘,’Seqno‘,’Price‘,把它分割为三列’Symbol‘,’Seqno‘和’Price‘
以data第一行为例,通过空格进行split,通过strip去掉头尾空格的干扰,返回一个list
l1=df['data'][0].strip().split(' ')
这个list的第2,4,6个元素即为我们想要得到的值。
l1[1],l1[3],l1[5]
('APPL', '0', '1623')
编写一个函数,用来apply方法的调用,split这一列,实现原理如上面一样
def foo(line): items=line.strip().split(' ') return Series([items[1],items[3],items[5]])
使用apply方法把data这一列分为三列
df_tmp=df['data'].apply(foo) df_tmp.head()
0 | 1 | 2 | |
---|---|---|---|
0 | APPL | 0 | 1623 |
1 | APPL | 0 | 1623 |
2 | APPL | 0 | 1623 |
3 | APPL | 0 | 1623 |
4 | APPL | 1 | 1649 |
使用rename方法把新生成的columns的名字重新命名一下
df_tmp=df_tmp.rename(columns={0:"Symbol",1:"Seqno",2:"Price"})
df_tmp.head()
Symbol | Seqno | Price | |
---|---|---|---|
0 | APPL | 0 | 1623 |
1 | APPL | 0 | 1623 |
2 | APPL | 0 | 1623 |
3 | APPL | 0 | 1623 |
4 | APPL | 1 | 1649 |
把combine_first把df_tmp加到df的上面
df_new=df.combine_first(df_tmp)
df_new.head()
A | Price | Seqno | Symbol | data | time | |
---|---|---|---|---|---|---|
0 | A | 1623 | 0 | APPL | Symbol: APPL Seqno: 0 Price: 1623 | 1473411962 |
1 | A | 1623 | 0 | APPL | Symbol: APPL Seqno: 0 Price: 1623 | 1473411962 |
2 | A | 1623 | 0 | APPL | Symbol: APPL Seqno: 0 Price: 1623 | 1473411963 |
3 | A | 1623 | 0 | APPL | Symbol: APPL Seqno: 0 Price: 1623 | 1473411963 |
4 | A | 1649 | 1 | APPL | Symbol: APPL Seqno: 1 Price: 1649 | 1473411963 |
数据删除处理
删掉data列
del df_new['data'] df_new.head()
A | Price | Seqno | Symbol | time | |
---|---|---|---|---|---|
0 | A | 1623 | 0 | APPL | 1473411962 |
1 | A | 1623 | 0 | APPL | 1473411962 |
2 | A | 1623 | 0 | APPL | 1473411963 |
3 | A | 1623 | 0 | APPL | 1473411963 |
4 | A | 1649 | 1 | APPL | 1473411963 |
删掉’A’这一列
del df_new['A'] df_new.head()
Price | Seqno | Symbol | time | |
---|---|---|---|---|
0 | 1623 | 0 | APPL | 1473411962 |
1 | 1623 | 0 | APPL | 1473411962 |
2 | 1623 | 0 | APPL | 1473411963 |
3 | 1623 | 0 | APPL | 1473411963 |
4 | 1649 | 1 | APPL | 1473411963 |
相关文章推荐
- 利用Python Pandas进行数据预处理-Pandas基本的数据结构
- 自定义表格控件(通过TabLayout+TabRow)获取表格所有数据,并对表格进行相关事件监听
- 使用BeanPostProcessor接口对受管Bean进行预处理,通过自定义Annotation,获取所有Controller的Url
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- 通过socket接收数据并进行解析内存数据
- mysql通过拷贝数据文件的方式进行数据库迁移
- 22-OC中通过block对NSArray中的数据进行排序
- scikit-learn进行数据预处理
- flex3通过fluorinefx跟asp.net进行数据交互
- 用Python进行数据挖掘(数据预处理)
- 使用jieba进行数据预处理(分词,过滤停用词及标点,获取词频、关键词等)
- 如何对建模型数据进行预处理
- 利用JDBC通过MySQL进行数据存储查询修改的简易快递管理系统
- js 与 php 通过json数据进行通讯示例
- S3C2440A串口驱动-----WINCE6.0下通过串口和外设进行数据通信(一)
- Android手机通过wifi进行数据传输(二)
- 通过加密算法,对配置中心的敏感数据进行加密
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 利用python Pandas进行数据预处理
- 通过java代码对json格式数据进行解析