Pandas 常见用法个人随笔

以前在学校里,跑深度学习实验,数据都是规则的、同质化数值型数据,很少字符型,只需熟练掌握 numpy 来处理数组、矩阵即可。
现在来工业级做推荐算法了,收集的数据大量都是字符型、异构的数据,因此需要 pandas 进行处理。乘着周末来好好梳理一下 pandas 的常见用法。
主要参考书籍:

  • 《利用 Python 进行数据分析》pandas 之父
  • 《Python 数据科学手册》

pandas 主要是用来处理表格型、异质型数据

import pandas as pd
from pandas import Series, DataFrame
  • Series 是一种一维的数值型对象,包含一个值序列 (.values) 和一个索引 (.index),默认索引是从 0 到 N-1
obj = pd.Series([4, -2, 3, 4])
# 有两个属性,values, index
obj2 = pd.Series([4, -2, 3, 4], index=['d', 'b', 'c', 'a']


https://stackoverflow.com/questions/59991397/attributeerror-dataframe-object-has-no-attribute-ix

df.iloc[:, integer]

.ix is removed

By the way, df.loc[:,'col_header'] is for str or Boolean indexing (掩码,或者 index + columns)

drop_duplicates() 用法

# hot_user_set = set(all_data_expo_click.loc[all_data_expo_click['label'] == '1']['user_id'].drop_duplicates('user_id')) 
hot_user_set = set(all_data_expo_click.loc[all_data_expo_click['label'] == '1']['user_id'].drop_duplicates('first'))
    
# 只取一列就变为了 Serie, 然而Series 没有列名

ValueError: keep must be either "first", "last" or False
# 使用 value_counts() 命令

df_train.porn.value_counts()
df_train[df_train['newsExposure30Days'] <= 1]['newsExposure30Days'].value_counts()

我一般先用 groupby 之后,然后 lang_type_df.count().sort_values()
pandas 的一个 bug:

train_infer_side_info = pd.concat([click_train_side_info, infer_side_info_dedup], axis=0).fillna("no value").astype(str)

# 假如 click_train_side_info 和 infer_side_infor_dudup 中列名一致,但是两者的列顺序是不一致的,这会导致 concat 后的表的列的顺序可能也无法保障。

在这时候,如果用 train_infer_side_info_array = np.array(train_infer_side_info) 那么对应到 array 里面的列的顺序可能是不一致的。

解决办法:
      train_infer_side_info = train_infer_side_info[click_train_side_info.columns]  # 保持原来的列顺序
posted @ 2021-11-28 11:18  Gelthin  阅读(73)  评论(0编辑  收藏  举报