用pandas求差集
从df1中去除掉df2的内容
data={'id':[1,2,3]} data2={'id':[3,1,4]} df1=pd.DataFrame(data) df2=pd.DataFrame(data2) print df1 print df2 df3=df1[~df1['id'].isin(df2['id'])] print df3
求某个时间区间的数据集
tart_t='2016-04-05 00:00:00' end_t='2016-04-16 00:00:00' action.time=pd.to_datetime(action.time,format='%Y-%m-%d %H:%M:%S') starttime=pd.to_datetime(start_t,format='%Y-%m-%d %H:%M:%S') endtime=pd.to_datetime(end_t,format='%Y-%m-%d %H:%M:%S') action=action[(action.time<endtime)&(action.time>=starttime)]
dummies
我理解get_dummies是将拥有不同值的变量转换为0/1数值。打个比方,小明有黄、红、蓝三种颜色的帽子,小明今天戴黄色帽子用1表示,红色帽子用2表示,蓝色帽子用3表示。但1、2、3数值大小本身是没有意义的,只是用于区分帽子的颜色,因此在实际分析时,需要将1、2、3转化为0、1,如下代码所示:
import pandas as pd
xiaoming=pd.DataFrame([1,2,3],index=['yellow','red','blue'],columns=['hat'])
print(xiaoming)
hat_ranks=pd.get_dummies(xiaoming['hat'],prefix='hat')
print(hat_ranks.head())
hat
yellow 1
red 2
blue 3
hat_1 hat_2 hat_3
yellow 1 0 0
red 0 1 0
blue 0 0 1
其它to DataFrame
dict to DataFrame
pd.DataFrame(d.items())
fillna
用同组的均值填补
>>> df
name value
0 A 1
1 A NaN
2 B NaN
3 B 2
4 B 3
5 B 1
6 C 3
7 C NaN
8 C 3
>>> df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))
>>> df
name value
0 A 1
1 A 1
2 B 2
3 B 2
4 B 3
5 B 1
6 C 3
7 C 3
8 C 3
ipython运行python
启动新的namespace运行: %run main.py
在原有的namespace运行:%run -i main.py