[利用python进行数据分析 书笔记]第7章 数据规整化:清理、转换、合并、重塑

合并数据集

数据库风格的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属性上进行索引








猜你喜欢

转载自blog.csdn.net/daisy_fight/article/details/80806491