您的位置:首页 > 移动开发

通过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

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: