a = pd.read_csv("you.csv")
读取的数据如下:
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
输出:
所有行全部打乱
a.reindex(np.random.permutation(a.index))
输出:
其中np.random.permutation():随机排列序列.随机打乱1~5
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博客