零散的pandas、numpy功能整理,包括机器学习的部分库。
1、关于pandas的交集并集补集
援引网上的案例:
df1 = pd.DataFrame([['张三', 10, '男'], ['李四', 11, '男'], ['王五', 11, '女'],['赵六', 10, '女'],['王七', 11, '男'],['Mike', 10, '男']], columns=['name', 'age', 'sex']) df2 = pd.DataFrame([['Mike', 10, '男'], ['Jane', 11, '女'],['张三', 10, '男']],columns=['name', 'age', 'sex'])
取交集: pd.merge(df1,df2,on=['name', 'age', 'sex'],how='inner') 取并集
pd.merge(df1,df2,on=['name', 'age', 'sex'],how='outer')
取补集
df1 = df1.append(df2) df1 = df1.append(df2) df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
要求是两个表的列名称是一致的(对于大数据的处理速度有待后续)
2、dfarr1=dfarr.drop(dfarr[dfarr.pointxy=='长泰县长泰一中'].index)
删除dfarr.pointxy字段=='长泰县长泰一中'的值
3、t3.columns=['k']#命名列的名字
t1=t1.rename(columns={'风速(m/s)':'fs'})#修改名字
4、调换列的顺序
a=pd.Dataframe(plarr)
b='pm','lon','lat','qy','wd','sd','fs','t7','t8','t9','t10','t11','t12','t13','t14','t15','t16','t17','t18','t19','t20','t21','t22','t23','t24','t25']
a=a[b]
5、查找数据中的字符串(numpy)
【1、利用numpy.isreal()函数标定数据是否为数值型。
2、查找False的index
3、利用index查看具体的字符串啥样子】
6、构造数组,数组的复制(扩充)
【构造一个doy数组,其中一个栅格shape(58,52)--相当于一个小时,一天24小时,所以:
ak=src_ds.ReadAsArray()#前文部分不举例子,该处获取shape
ak.shape
akb=np.zeros((10929984))#计算所有,58*52*24*151,半年
for i2 in range(151):
akc=np.ones((72384))*i2#一天
akb[i2*72384:(i2+1)*72384]=akc#每天替换
其中:
数组的替换,可以用数组替换,例如
a=np.zeros((3))
b=np.ones((3))*3
a=b
a=np.zeros((6))
a[0:3]
Out[25]: array([0., 0., 0.])
a[0:3]=b】
7、
数组的左右翻转(冒号的妙用:http://www.cppcns.com/jiaoben/python/225440.html)
a=np.arange(6).reshape((2,3))
a
Out[19]:
array([[0, 1, 2],
[3, 4, 5]])
a[:,::-1]
Out[21]:
array([[2, 1, 0],
[5, 4, 3]])
上下颠倒:
a[::-1][:,::-1][:,::-1]
8、
数组扩展:参考
https://blog.csdn.net/yimingsilence/article/details/52924359
9,机器学习部分库
GBM-lightgbm、xgboost、sklearn