1. 创建pandas.DataFrame

df = pd.DataFrame()
df['id'] = [1,1,2]
df['movie'] = ['2012','The Pursuit of Happyness',  'Avatar']
id = [1,1,2]
movie = ['2012','The Pursuit of Happyness',  'Avatar']
df = pd.DataFrame({'id': id, 'movie': movie})

结果如下所示:

2. 修改DataFrame的列名

df.columns = ['id', 'movie', 'score', 'time']
df.rename(columns={0: 'id',1:'movie', 2:'score', 3:'time'}, inplace= True)

结果如下所示:

3. 按不同方式访问(遍历)

df.loc[0:2, ['movie','score']]
df.iloc[0:2, 1:3]

结果如下所示:

4. 使用特定函数单独处理某列数据

def is_favorite(x) :
    if x < 3 :
        return "No"
    else :
        return "Yes" 

df['favorite'] = df['score'].map(is_favorite)

结果如下所示:

5. 特定数据按字典进行替换

swap = {"Yes": 1, "No": 0}
df.replace(swap, inplace=True)

结果如下所示:

6. 处理时间类型数据

t = pd.DatetimeIndex(df['time'])
df['year'] = t.year
df['month'] = t.month
df['day'] = t.day
df['dayofweek'] = t.dayofweek

7. 统计某列数据值的分布

df['score'].value_counts()
import matplotlib.pyplot as plt
df['score'].value_counts().plot.bar(figsize=(15,10))
plt.show()

8. 查看某列数据的缺失率

df['score'].isnull().mean()

9. Nan数据填充

df['score'].fillna(60, inplace = True)

10. 合并DataFrame

df = pd.concat([df1, df2], axis=0,ignore_index=True)
df = pd.merge(df, df_attr, how='left', on='id')

11. 获取满足条件的数据

df.loc[df['is_favorite'] == 0]
ml = ['2012', 'Avatar']
df.loc[df['movie'].isin(ml)]

12. 去掉重复出现的数据(保留第一个)

df.drop_duplicates(subset=['id','movie'], keep='first')

       以上处理是我最近参加一个推荐系统比赛过程中所使用的Pandas.DataFrame处理数据的方法,详细的函数参数及其使用方法可以通过help函数获取或通过Pandas的官方帮助文档获取。


13. 按一定顺序进行排序

df.sort_values(['moive','score'])

1.参考文档:

       [1]. http://pandas.pydata.org/pandas-docs/version/0.24/pandas.pdf