合并数据集
数据库风格的DataFrame合并
索引上的合并
merge参数上采用left_index和right_index |
join方法 |
在连接键上做做左连接,支持参数的索引和某个列之间的连接 |
left1.join(right1 , on ='key') |
轴向连接
pd.concat()
合并重叠数据
a.combine_first(b) |
如果a不存在就用b补上 |
重塑和轴向旋转
重塑层次化索引
stack |
将数据的列“旋转”为行(操作最内层)需传入其他层级别进行操作,默认滤除缺失数据 |
unstack |
将数据的行“旋转”为列(操作最内层)需传入其他层级别进行操作 |
将“长格式”旋转为“宽格式”
data.pivot('a','b','c') |
前两个参数值分别用作行和列索引的列名,最后一个参数值则是填充DataFrame的数据列的列名 |
也可以用set_index创建层次化索引,再用unstack重塑 |
数据转换
转移重复数据
data.duplicated() |
返回一个布尔型Series,表示各行是否重复行 |
data.drop_duplicates() |
返回一个移除了重复行的DataFrame |
两个都默认保留第一个出现的值组合,传入take_last = true 则保留最后一个 |
利用函数或映射进行数据转换
map方法 |
接受一个函数或含有映射关系的字典型对象 |
替换值
fillna方法 |
填充缺失数据也可以看作值替换的一种特殊情况 |
map方法 |
修改对象的数据子集 |
replace方法 |
data.replace([-999,-1000],[np.nan,0]) 传入一个由替换关系组成的列表 |
data.replace({-999:np.nan,-1000:0}) 传入字典 |
重命名轴索引
map方法 |
轴标签也有一个map方法。Data.index.map(str.upper) |
rename方法 |
data.rename(index = str.upper,columns = str.upper) |
data.rename(index = {'a':'b'}) 传入字典型对象实现对部分轴标签更新 |
rename进行的是复制,传入inplace =true 可就地修改某个数据 |
离散化和面元划分
cut函数 |
pd.cut(arr,bins划分的数组) |
arr.labels |
arr.levels |
pd.value_counts(arr) |
通过right = false可以进行闭端修改 |
参数labels = []可以对面元名称进行修改 |
pd.cut(data,4,precision =2) 分成四组 |
qcut |
可根据样本分位数对数据进行面元划分 |
排列和随机采样
sampler =np.random.permutation() |
sampler = np.random.randint() randint得到一组随机整数 |
dff = df.take(sampler) |
计算指标/哑变量
将分类变量转换为“哑变量矩阵”或“指标矩阵”。如果某列中有k个不用的值,则可以拍生出一个k列矩阵。
pd.get_dummies(列,prefix= ‘前缀’) |
派生出一个k列矩阵 |
字符串操作
字符串对象方法
正则表达式
pandas中矢量化的字符串函数
两个实现矢量化的元素获取操作的办法:1.使用str.get 2.在str属性上进行索引