1:增
1.1 insert
目前本人关于pandas的增的函数只有insert用的多点
Dataframe.insert(loc, column, value, allow_duplicates=False)
其中:
-
loc:int型,表示插入位置在第几列;若在第一列插入数据,则 loc=0
-
column:给插入的列取名,如 column='新的一列’
-
value:新列的值,数字、array、series等都可以
-
allow_duplicates:是否允许列名重复,选择Ture表示允许新的列名与已存在的列名重复
例如:
在使用insert函数后:
或者插入array:
1.2
第二种方法就是直接加入一个列就行。
2 : 减
pandas—删除某行或某列数据_pandas 删除列_IT技术学习的博客-CSDN博客这个博客写的很清楚。
3:查
3.1 loc与iloc
可以看出,这两个长得还是挺像的,区别在于后面多了个i,这个i是index的缩写, loc是根据是根据行列名来提取数据,而iloc是根据索引来提取数据:
但是,如果用m.loc[2,1]就是错的:
正确的应该是:
3.2 isna和notna
这两个命令是用来处理缺失值的:
3.2.1 isna
利用isna命令,能够检查某一列是否有缺失值,也可以检查所有的列的缺失值情况,如果没有缺失值,则在单元格呈现Flase,有缺失就是True。也可以利用isna直接统计缺失了多少值:
或者也可以直接用info直接查看DataFrame的所有行列情况:
如果要查看某一列的缺失值在哪一行:
3.2 notna
在使用notna统计缺失值的时候和isna刚好相反,True代表没有缺失,False代表缺失
同理,也可以统计所有列的缺失值总数:
这时候呈现的是每列的所有值个数和。
如果想要把某一列没有缺失的行全部提取出来,可以:
4:改
4.1 map
import pandas as pd
t = pd.DataFrame(data=[[1, '不幸福'], [2, '幸福'], [8, '幸福'], [1, '不幸福']], columns=['a', 'b'])
print(t)
'''
a b
0 1 不幸福
1 2 幸福
2 8 幸福
3 1 不幸福
'''
t['c'] = t['b'].map({'幸福':1, '不幸福':0})
print(t)
'''
a b c
0 1 不幸福 0
1 2 幸福 1
2 8 幸福 1
3 1 不幸福 0
'''
用map的形式,能够把一列对应的数据赋值
4.2 fillna
fillna函数可以对缺失值进行填充
import pandas as pd
t = pd.DataFrame(data=[[1, '不幸福'], [None, '幸福'], [8, '幸福'], [None, '不幸福']], columns=['a', 'b'])
print(t)
'''
a b
0 1.0 不幸福
1 NaN 幸福
2 8.0 幸福
3 NaN 不幸福
'''
t['a'].fillna(0, inplace=True)
print(t)
'''
a b
0 1.0 不幸福
1 0.0 幸福
2 8.0 幸福
3 0.0 不幸福
'''
同时也可以对每一列所有不同的值进行统计:
import pandas as pd
t = pd.DataFrame(data=[[1, '不幸福'], [1, '幸福'], [8, '幸福'], [1, '不幸福']], columns=['a', 'b'])
a = t['b'].value_counts()
print(a)
'''
幸福 2
不幸福 2
Name: b, dtype: int64
'''
'''
t['b'].value_counts().index 该列含有的不同元素的种类
t['b'].value_counts().values 该列含有的不同元素的个数
'''
4.3 df.apply()
dataframe.apply(function,axis)对一行或一列做出一些操作(axis=1遍历行,axis=0遍历列)
import pandas as pd
def func(x):
if x == '幸福':
return 8
else:
return 9
t = pd.DataFrame(data=[[1, '不幸福'], [1, '幸福'], [8, '幸福'], [1, '不幸福']], columns=['a', 'b'])
print(t)
'''
a b
0 1 不幸福
1 1 幸福
2 8 幸福
3 1 不幸福
'''
t['b'] = t['b'].apply(func)
print(t)
'''
a b
0 1 9
1 1 8
2 8 8
3 1 9
'''
** 未完待续,以后再来更新