Pandas入门 _DataFrame数据处理的一些技巧

a = pd.read_csv("you.csv")

读取的数据如下:

Pandas入门 _DataFrame数据处理的一些技巧_第1张图片

 1.对列进行操作

#抽取一列
a["H2"]
#抽取若干列
a[['H2','CO','CO2',C2H4]]
#去除某一列,例如去除label
a.drop('label',axis = 1)
#删除某一列也可以用del
del frame['ok']
#如果你想要将标签的顺序重新排列,你可以使用reindex
c = ['CO','H2','CO2']
a.reindex(columns = c)

2.对行进行操作(包括随机抽取)

#抽取若干行,例如0到4行
a[0:5]
#若抽取其中的某一行,是不可以用a[3]的。可以用loc
a.loc[0]
#一般来讲,行代表样本,列代表标签。如果随机抽取出十行可以使用sample函数
#df.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
a.sample(n=5)           #随机抽取5行,列标签不变
a.sample(n=8,axis=1)    #随机抽取8列,行样本不变
a.sample(frac = 0.1)    #按0.1比例进行抽取
#去除某一行,例如去除label
a.drop([0,1])

3.打乱顺序   

参考:https://blog.csdn.net/gaishi_hero/article/details/81433528

第一种方法:


from sklearn.utils import shuffle

shuffle(a)

第二种方法:

DataFrame有一个属性被称为index,该属性会向DataFrame的每一行赋一个标识符值。默认情况下,在构造DataFrame时,pandas会赋给每一行0,1,2,3··· 这样的索引值。而且索引值在创建后是稳定的,也就是说,它们不会因为数据重新排序而发生改变。

通过上面一番解释,我们就会明白索引值与相应行的内容在一开始就绑定好了,所以我们要想随机对行进行排序,只需要打乱索引值的顺序即可。

a.reindex([2, 0, 1])
#索引不存在的index也是可以的
#例如a.reindex([2,0,1,3]),他会自动填充为Nan

输出:

Pandas入门 _DataFrame数据处理的一些技巧_第2张图片

所有行全部打乱


a.reindex(np.random.permutation(a.index))

输出:

Pandas入门 _DataFrame数据处理的一些技巧_第3张图片

其中np.random.permutation():随机排列序列.随机打乱1~5

Pandas入门 _DataFrame数据处理的一些技巧_第4张图片

4.改变DataFrame的值

a.at[0,"H2"] = 2

5.删除DataFrame里面含有空值的行、列

a.dropna(how = 'all')    # 传入这个参数后将只丢弃全为缺失值的那些行
a.dropna(axis = 1)       # 丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
a.dropna(axis=1,how="all")   # 丢弃全为缺失值的那些列
a.dropna(axis=0,subset = ["H2", "C0"])   # 丢弃‘H2和‘CO’这两列中有缺失值的行
a.dropna(axis=1,subset = [0,1])   # 丢弃0和1这两行中有缺失值的列

6.填充空值

a.fillna(10) #自动按10填充
a.C2H6.fillna(a.C2H6.mean(),inplace = True) #用平均值来填充

7.对DataFrame里面的数据进行统计描述

a['H2'].describe()

8.对DataFrame的值进行排序

#1.对dataframe进行索引排序
df.sort_index(axis=0,ascending=True,inplace=True)
#axis=0表示按行索引排序,若按列排序,则修改参数为1,ascending表示升序排序,inplace=True表示在原来DF上进行修改,不改变存储地址
#输出
	A	D	C	B
a	3	4	3	2
b	5	2	9	6
c	1	1	15	4
d	7	3	12	8
e	9	5	6	10

#2.对dataframe进行数值排序
df.sort_values(by="A",axis=0,ascending=True,inplace=True)
#by传入数值所属的行或者列名,axis=0表示按行排序,"A"为列名
#输出
    A	D	C	B
c	1	1	15	4
a	3	4	3	2
b	5	2	9	6
d	7	3	12	8
e	9	5	6	10

#3.排名rank
df["rank"] = df["B"].rank(method = "first")
#输出
	A	D	C	B	rank
c	1	1	15	4	2.0
a	3	4	3	2	1.0
b	5	2	9	6	3.0
d	7	3	12	8	4.0
e	9	5	6	10	5.0
#method可传入"first","min","max","average"四种参数,常用第一种,只在排名出现并列时结果出现差别,比如有两个人分数都是100分满分,min则两个人排名返回1(并列第一),max返回2(并列第二),average返回1.5

9.删除DataFrame里面某列含有某个数组元素的行

data = {
    'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
    'year':[2000,2001,2002,2001,2002],
    'pop':[1.5,1.7,3.6,2.4,2.9]
}
data = pd.DataFrame(data)
print(data)
print(data.year.isin([2000]))
data = data[data.year.isin([2000])]
print(data)
#输出
_________________________
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
_________________________
0     True
1    False
2    False
3    False
4    False
Name: year, dtype: bool
_________________________
  state  year  pop
0  Ohio  2000  1.5

10.排序

10.1按index排序

frame.sort_index() #行
frame.sort_index(axis=1)  #列
frame.sort_index(axis=1, ascending=False) #降序

10.2 按列标签的值进行排序

frame.sort_values(by='b')
#要根据多个列进行排序,传入名称的列表即可:
frame.sort_values(by=['a', 'b'])

10.3

frame.rank()
frame.rank(axis='columns',method='max')#method默认为average

11.删除含有特定范围内数据的行、列参考:DataFrame基础但又常用的操作_Levennnnn的博客-CSDN博客

 

你可能感兴趣的:(pandas,python,机器学习)