1,loc,iloc,iat
python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[] - 奥辰 - 博客园
2,遍历datafram
如何优雅的遍历dataframe_舞风炫钺的博客-CSDN博客
3,Dataframe 根据某一列数据的值修改另一列的值
1,方法一loc
data_frame.loc[ (data_frame["列1"] != 0),"列2" ] = -99999
2,方法二
data_frame['列1'][data_frame['列2']!=0] = -99999;
3,方法三np.where
tt['gender'] =np.where(tt['isMarried']=='yes',-9999,tt['gender'])
4,Dataframe 根据某多列数据的值修改另一列的值
如果多列条件,
列a>100,d是-9999
列b<列c,d是-8888
5,排序,降序是FALSE
# 两个字段都降序
df.sort_values(by=["aqiLevel","bWendu"],ascending = False)
6,获取dataframe的列三种方法
#获取dataframe的列三种方法
[column for column in df]
[a for a in df]
df.columns.tolist()
list(df.columns)
7,删除dataframe列,修改列名
import pandas as pd
a = pd.DataFrame([[1,2,3],
[3,1,3],
[1,2,1]])
labels = ['a', 'b', 'c']
#a = pd.DataFrame(a, index=labels,columns=labels)
添加列名
a.columns = labels
修改列名
df.rename(columns={'原列名':'新列名'},inplace=True)
删除一列
a.drop('a',axis = 1,inplace = True) #axis参数默认为0
删除多列
a.drop(columns=['a','b'],axis=1,inplace = True)
a.head()
8,datafram去重
df.drop_duplicates(subset=None, keep='first', inplace=False)
subset:column label or sequence of labels, optional ,用来指定特定的列,默认所有列
keep:{‘first’, ‘last’, False}, default ‘first’ ,删除重复项并保留第一次出现的项
inplace:boolean, default False ,是否直接修改原 dataframe
9,保存dataframe
10,查看datafram中字段类型
offline['score'].dtypes
offline.dtypes
11,两个dataframe拼接不同顺序字段
import pandas as pd
import numpy as np
data = {'name': ['Joe', 'Mike', 'Jack', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jason', 'Even'],
'age': [25, 32, 18, np.nan, 15, 20, 41, np.nan, 37, 32],
'gender': [1, 0, 1, 1, 0, 1, 0, 0, 1, 0],
'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(data, index=labels)
fea1=['age','name']
fea2=['age','name','gender']
fea3=['gender','age','name']
df1 = df[fea1]
df2 = df[fea2]
df3 = df[fea3]
df33 = pd.concat([df1, df2], axis=0)
df333 = pd.concat([df1, df3], axis=0)
#实现变换字段顺序
fea=['age','name']
df3333 = df333[fea]
12,dataframe统计元素数量
value_counts()是Series拥有的方法,一般在DataFrame中使用时,需要指定对哪一列或行使用
import pandas as pd
a = pd.DataFrame([[1,2,3],
[3,1,3],
[1,2,1]])
result = a.apply(pd.value_counts)
print(result)
那么,如果列表项统计,如何将列表变成dataframe?
import pandas as pd
from pandas.core.frame import DataFrame
a = [1, 2, 3, 1, 1, 2,2,2]
a2 = DataFrame(a)
a2.value_counts()
13,字典如何转dataframe?
两种方法:
第一种:直接转
df = pd.DataFrame(d1)
from pandas.core.frame import DataFrame
a=[1,2,3,4]#列表a
b=[5,6,7,8]#列表b
c={"a" : a,
"b" : b}#将列表a,b转换成字典
data=DataFrame(c)#将字典转换成为数据框
print(data)
第二种:使用函数可以实现横向的转换
pd.DataFrame.from_dict(d1, columns=['A', 'B'], orient='index')
可参考博客
jjj熊猫DataFrame from_dict()–字典到DataFrame_从零开始的教程世界-CSDN博客z
14,datafram如何变字典?
Dataframe与字典(dict)之间的转换 - Jony-2018 - 博客园
15,datafram中字段转换数据类型
16,多行转一行
SELECT
id,
group_concat(distinct(class),',') AS refuse
FROM sample
GROUP BY id
17, 一行转换多行
SELECT
IDNUMBER,
id,
ss.class
FROM sample
LATERAL VIEW explode(split(class,",")) ss AS class
18,df.shape
df.shape[0]求出df的行数
df.shape[1]求出df的列数
19,查看dataframe的列类型
ccc = online_score3.dtypes
for i in ccc.index: # 依次选取Series的各个key
print(i,' ',ccc[i]) # 这里的c[i]的使用,在Series中可以使用Series[key]的形式取出对应的value
20,处理变量名的连接
fea = ['apply_id','name','dt','created_at','score'] + model2.feature_name_