美文网首页
Pandas中的一些操作_03(2019-1-19)

Pandas中的一些操作_03(2019-1-19)

作者: MMatx | 来源:发表于2019-01-20 21:44 被阅读0次

1、通过apply进行数据预处理
其最重要的参数是传入的函数,传入的函数会对DataFrame的每一行(index)或每一列(column)进行操作,然后返回每一个index或column对应的值,再将这些行(或者列)以及其对应的返回值重新组合成一个DataFrame的对象,然后作为整个apply方法的返回值返回。

至于传入的函数具体是对每一行还是每一列进行操作,取决于apply传入的axis参数,默认axis=0,表示对每一列进行操作,axis=1,表示对每一行进行操作。因此apply方法最重要两个参数是传入的函数func和axis。
applymap: 用于dataframe上,是元素级别的操作;

map:(其实是python自带的)用于series上,是元素级别的操作。
通过apply可以进行的数据预处理包括:
(1)添加行列数据
添加列数据,可以直接指定列数据和列名
(2)修改某一行的数据大小写
(3)去掉数据两边的空格
(4)把原来的一个数据变成多个
(5)给列重新命名
(6)删除某一列
(7)把数据保存成csv

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
df = pd.read_csv('apply_demo.csv')
#添加一列
s1 = Series(['a']*28)
df['A'] = s1
#修改列元素
df['A'] = df['A'].apply(str.upper)
#把一列分成多列
def foo(line):
   items = line.strip().split(' ')
   return Series([items[1],items[3],items[5]])
dt_temp = df['data'].apply(foo)
dt_temp=dt_temp.rename(columns={0:'Symbol',1:'Seqno',2:'Price'})
df_new  = df.combine_first(dt_temp)
#删除一列
del df_new['data']
#保存
df_new.to_csv('demo_duolicate.csv')

2、去重操作
(1)查看元素是否唯一值unique()
(2)查看每个元素出现的次数
计数值value_counts()
(3)判断与前后数据是否重复
(4)删除重复数据,保留最前面的一个,保留最后一个

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
df= pd.read_csv('demo_duplicate.csv')
df.head()
del df['Unnamed: 0']
df['Seqno'].unique()
df['Seqno'].duplicated() #判断是否和前面重复
df['Seqno'].drop_duplicates(keep='first')
df['Seqno'].duplicated(keep='last') #判断是否和hou面重复
df['Seqno'].drop_duplicates(keep='last')

3、时间序列操作
(1)格式化时间
(2)把时间当成索引
(3)具体内容参考文档

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
from datetime import datetime
t1 = datetime(2009,10,20)
date_list=[
   datetime(2016,9,1),
   datetime(2016,9,10),
   datetime(2017,9,1),
   datetime(2017,9,20),
   datetime(2017,10,1)
]
s1 = Series(np.random.rand(5),index=date_list)
s1['2016-09-10']
s1['20160910']
s1['2016-9']
s1['2016']
# pd内部提供函数
pd.date_range(start='2016-01-01',periods=100)
pd.date_range(start='2016-01-01',periods=100,freq='W')
pd.date_range(start='2016-01-01',periods=100,freq='W-MON')
pd.date_range(start='2016-01-01',periods=100,freq='H')


相关文章

网友评论

      本文标题:Pandas中的一些操作_03(2019-1-19)

      本文链接:https://www.haomeiwen.com/subject/pbpfjqtx.html