pandas合并groupby_Pandas中级技巧-数据的灵活运算
import numpy as np
import pandas as pd
数据聚合和分组运算
先说一下什么是分组运算,什么是聚合。一个表格型数据集,我们需要对某一标签下的数据进行运算,对于具有某种特性的数据进行运算。对于数据分析的角度,我们想到的就是将这个表格型数据集分隔--运算---合并
GroupBy机制
正如上面我们讲的,我们将自己数据集分隔,然后运算,最后聚合。在pandas里面,有groupby可以完成,为了更好的理解分隔--运算--合并的过程,下面开始拿例子看看:
frame = pd.DataFrame({'key1':['a','s','a','s','g'],'key2':['one','two','three','four','five'],'data1':range(5),'data2':np.random.randn(5)})
print(frame)
key1 key2 data1 data2
0 a one 0 -0.235398
1 s two 1 -1.273801
2 a three 2 -1.275459
3 s four 3 0.959562
4 g five 4 0.880569
#以key1分离数据
grouped = frame.groupby(frame['key1'])
for name,result in grouped:print('分离标签:')print(name)print('分离数据:')print(result)print('====================')
分离标签:
a
分离数据:key1 key2 data1 data2
0 a one 0 -0.235398
2 a three 2 -1.275459
====================
分离标签:
g
分离数据:key1 key2 data1 data2
4 g five 4 0.880569
====================
分离标签:
s
分离数据:key1 key2 data1 data2
1 s two 1 -1.273801
3 s four 3 0.959562
====================
#对数据做运算+合并
print(grouped.mean())
data1 data2
key1
a 1 -0.755429
g 4 0.880569
s 2 -0.157120
上面使用grouped.mean()的运算步骤是:先分别算各自的mean,然后在做了合并
我们可以分析,groupby的so传入的是一个类list(可以是有索引关系的map和Series),我们通过传入的类list,将数据分隔,然后运算和合并,看下面例子
state = ['lala','hahah','lala','mumumu','xixixi']
state
['lala', 'hahah', 'lala', 'mumumu', 'xixixi']
frame[['data1','data2']].groupby(state)
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000000088B8D30>
for name,result in frame[['data1','data2']].groupby(state):print('分离标签:')print(name)print('分离数据:')print(result)print('====================')
分离标签:
hahah
分离数据:data1 data2
1 1 -1.273801
====================
分离标签:
lala
分离数据:data1 data2
0 0 -0.235398
2 2 -1.275459
====================
分离标签:
mumumu
分离数据:data1 data2
3 3 0.959562
====================
分离标签:
xixixi
分离数据:data1 data2
4 4 0.880569
====================
做一个总结:groupby里面传入的就是一个类list数据,它的机制是会根据你传入的类list的数据进行分隔,哪怕把这个数据之前不属于这个表格类型数据。要被运算的表格类型数据要传输的是它的可被运算数据,提取方式是DataFrame数据的提取方式,如果不进行选择,那么就默认为所有可运算的数据
#再看一个例子
print(frame.groupby(frame['key1']).mean())
data1 data2
key1
a 1 -0.755429
g 4 0.880569
s 2 -0.157120
上面的例子是选取了key1这个列,然后算的是所有数据的平均值,这时候结果自动屏蔽key2的元素。这个key2的元素就是所谓的【麻烦列】
对分组迭代
其实分组迭代我们在之前已经见过,就是使用for循环来将数据输出,但是里面还是会有一些其他的东西来做分享
#例子1
for names,result in frame.groupby(['key1','key2']): #多个元素的传入,不能写为frame[['key1','key2']]print('分离标签:')print(names)print('分离数据:')print(result)print('====================')
分离标签:
('a', 'one')
分离数据:key1 key2 data1 data2
0 a one 0 -0.235398
====================
分离标签:
('a', 'three')
分离数据:key1 key2 data1 data2
2 a three 2 -1.275459
====================
分离标签:
('g', 'five')
分离数据:key1 key2 data1 data2
4 g five 4 0.880569
====================
分离标签:
('s', 'four')
分离数据:key1 key2 data1 data2
3 s four 3 0.959562
====================
分离标签:
('s', 'two')
分离数据:key1 key2 data1 data2
1 s two 1 -1.273801
====================
从多个维度分隔时,groupby传入的是带有标签的list(此时传入frame[['key1','key2']]会报错)
#例子2
state = frame.dtypes
state
key1 object
key2 object
data1 int64
data2 float64
dtype: object
for name,result in frame.groupby(state,axis=1):print('分离标签:')print(name)print('分离数据:')print(result)print('====================')
分离标签:
int64
分离数据:data1
0 0
1 1
2 2
3 3
4 4
====================
分离标签:
float64
分离数据:data2
0 -0.235398
1 -1.273801
2 -1.275459
3 0.959562
4 0.880569
====================
分离标签:
object
分离数据:key1 key2
0 a one
1 s two
2 a three
3 s four
4 g five
====================
我们一般是根据行数据的做分隔(默认axis=0),如果是用列数据做分隔,那么你需要使用axis=1,下面再做一个例子
frame.iloc[1]
key1 s
key2 two
data1 1
data2 -1.2738
Name: 1, dtype: object
frame['key1']
0 a
1 s
2 a
3 s
4 g
Name: key1, dtype: object
for name,result in frame.groupby(frame.iloc[1],axis=1):print('分离标签:')print(name)print('分离数据:')print(result)print('====================')
分离标签:
-1.2738009951202727
分离数据:data2
0 -0.235398
1 -1.273801
2 -1.275459
3 0.959562
4 0.880569
====================
分离标签:
1
分离数据:data1
0 0
1 1
2 2
3 3
4 4
====================
分离标签:
s
分离数据:key1
0 a
1 s
2 a
3 s
4 g
====================
分离标签:
two
分离数据:key2
0 one
1 two
2 three
3 four
4 five
====================
我们使用迭代发现,它返回了两类数据,所分隔的数据名称,和所分隔的数据本身,这个很像一个字典,我们在这个时候,也会选择将他转化为字典
dic = dict(list(frame.groupby(['key1','key2'])))
print(dic)
{('a', 'one'): key1 key2 data1 data2
0 a one 0 -0.235398, ('a', 'three'): key1 key2 data1 data2
2 a three 2 -1.275459, ('g', 'five'): key1 key2 data1 data2
4 g five 4 0.880569, ('s', 'four'): key1 key2 data1 data2
3 s four 3 0.959562, ('s', 'two'): key1 key2 data1 data2
1 s two 1 -1.273801}
选取一列或一列的子集
#看例子
print(frame.groupby(['key1','key2'])['data1'].mean())
key1 key2
a one 0three 2
g five 4
s four 3two 1
Name: data1, dtype: int64
从上面的例子可以看出,这样的逻辑是更清楚的,frame.groupby:表示表格型数据被分隔,frame.groupby([]):找到了被分割的列,frame.groupby([])[[]]:表示所运算的数据
上面的表示方法是前面:frame[].groupby([])的语法糖
通过字典和Series来分组
运用场景:你的数据的命名没有什么区分度和相关性,但是数据本身是有区分度和相关性的,那你就面临着给不同轴的重新命名的
frame = pd.DataFrame({'key1':[4,5,6,7,8],'key2':[2,3,4,5,2],'data1':range(5),'data2':np.random.randn(5)})
print(frame)
key1 key2 data1 data2
0 4 2 0 -0.057764
1 5 3 1 -1.026594
2 6 4 2 -0.297078
3 7 5 3 -0.144781
4 8 2 4 -0.206902
state = {'key1':'hebei','key2':'hebei','data1':'handan','data2':'zibo'}
test = frame.groupby(state,axis=1)
test.mean()
handan hebei zibo 0 0.0 3.0 -0.057764 1 1.0 4.0 -1.026594 2 2.0 5.0 -0.297078 3 3.0 6.0 -0.144781 4 4.0 5.0 -0.206902
如果是传入Series也可以达到相同的效果
mapping = pd.Series(['hebi','hebi','handn','zibo'],index=['key1','key2','data1','data2'])
mapping
key1 hebi
key2 hebi
data1 handn
data2 zibo
dtype: object
test = frame.groupby(mapping,axis=1)
print(test.mean())
handn hebi zibo
0 0.0 3.0 -0.057764
1 1.0 4.0 -1.026594
2 2.0 5.0 -0.297078
3 3.0 6.0 -0.144781
4 4.0 5.0 -0.206902
通过函数进行分组
首先我们要再次强调我们分组的条件是什么。分组的中的纲领是,根据我们的意愿来分组,如果你的默认的分组方式不能满足你的需求,那么你需要制定一些规则:前面我们学的规则有(重命名,不同列的选取)。
使用函数的方法可以大大的加强分组的灵活性
frame = pd.DataFrame(np.ceil(np.random.uniform(1,29,(5,5))),index=[1,2,3,1,2],columns=['a','s','d','f','a']) #字典方式录入和以columnindex方式录入不同
print(frame)
a s d f a
1 15.0 22.0 7.0 8.0 26.0
2 19.0 23.0 11.0 17.0 2.0
3 8.0 15.0 10.0 21.0 21.0
1 2.0 6.0 19.0 15.0 9.0
2 4.0 19.0 4.0 15.0 15.0
print(frame.groupby(frame.columns,axis=1).sum())
a d f s
1 41.0 7.0 8.0 22.0
2 21.0 11.0 17.0 23.0
3 29.0 10.0 21.0 15.0
1 11.0 19.0 15.0 6.0
2 19.0 4.0 15.0 19.0
解释一下上面的过程,我们使用了len函数,来统计columns上的字符长度,然后对于相同长度的string做了统计,然后计算了mean()
根据索引级别分组
这个是好理解的,在层次化索引下,我们的数据也呈现出规律,通过不同的索引级别,我们可以做出区分
frame = pd.DataFrame(np.ceil(np.random.uniform(1,100000,(4,4))),columns=[['tianzhu','tianzhu','wuwei','wuwei'],['bwjb','hebw','lala','mwmw']])
print(frame)
tianzhu wuwei bwjb hebw lala mwmw
0 21777.0 49416.0 97519.0 62829.0
1 91935.0 74657.0 30804.0 45317.0
2 79872.0 58847.0 8391.0 22251.0
3 62834.0 45321.0 11197.0 87951.0
frame.columns.names=['name','iii']
print(frame)
name tianzhu wuwei
iii bwjb hebw lala mwmw
0 21777.0 49416.0 97519.0 62829.0
1 91935.0 74657.0 30804.0 45317.0
2 79872.0 58847.0 8391.0 22251.0
3 62834.0 45321.0 11197.0 87951.0
print(frame.groupby(level='name',axis=1).mean())
name tianzhu wuwei
0 35596.5 80174.0
1 83296.0 38060.5
2 69359.5 15321.0
3 54077.5 49574.0
数据集合
我们前面已经使用了mean()函数,对于这个函数,我们可将离散的数据,做聚合运算,然后返回计算结果
#方式1
frame = pd.DataFrame(np.ceil(np.random.uniform(1,29,(5,5))),index=[1,2,3,1,2],columns=['a','s','d','f','a']) #字典方式录入和以columnindex方式录入不同
print(frame)
a s d f a
1 4.0 7.0 27.0 24.0 5.0
2 11.0 17.0 8.0 20.0 13.0
3 24.0 6.0 25.0 9.0 25.0
1 21.0 26.0 22.0 16.0 2.0
2 10.0 16.0 6.0 26.0 20.0
print(frame.groupby(frame.columns,axis=1).mean())
a d f s
1 4.5 27.0 24.0 7.0
2 12.0 8.0 20.0 17.0
3 24.5 25.0 9.0 6.0
1 11.5 22.0 16.0 26.0
2 15.0 6.0 26.0 16.0
对于合并的方法,我们也可以使用函数的方法来将数据整合,将函数传入agg或者aggregate()中
def top_to_top(arr):return arr.max()-arr.min()
frame = pd.DataFrame(np.ceil(np.random.uniform(1,29,(5,5))),index=[1,2,3,1,2],columns=['a','s','d','f','a']) #字典方式录入和以columnindex方式录入不同
print(frame)
a s d f a
1 8.0 16.0 14.0 15.0 4.0
2 14.0 28.0 28.0 16.0 18.0
3 14.0 16.0 27.0 21.0 20.0
1 2.0 18.0 9.0 17.0 13.0
2 12.0 24.0 20.0 20.0 16.0
print(frame.groupby(frame.index).agg(top_to_top))
a s d f a
1 6.0 2.0 5.0 2.0 9.0
2 2.0 4.0 8.0 4.0 2.0
3 0.0 0.0 0.0 0.0 0.0
#还可以使用describe
print(frame.groupby(frame.columns).describe())
a s ... f count mean std min 25% 50% 75% max count mean ... 75%
a 2.0 10.0 2.828427 8.0 9.0 10.0 11.0 12.0 2.0 20.0 ... 18.75
d 1.0 14.0 NaN 14.0 14.0 14.0 14.0 14.0 1.0 16.0 ... 21.00
f 1.0 2.0 NaN 2.0 2.0 2.0 2.0 2.0 1.0 18.0 ... 17.00
s 1.0 14.0 NaN 14.0 14.0 14.0 14.0 14.0 1.0 28.0 ... 16.00a max count mean std min 25% 50% 75% max
a 20.0 2.0 10.0 8.485281 4.0 7.0 10.0 13.0 16.0
d 21.0 1.0 20.0 NaN 20.0 20.0 20.0 20.0 20.0
f 17.0 1.0 13.0 NaN 13.0 13.0 13.0 13.0 13.0
s 16.0 1.0 18.0 NaN 18.0 18.0 18.0 18.0 18.0[4 rows x 40 columns]
面向列的多函数应用
我们前面的聚合运算可以发现,我们单次的使用了聚合函数。但是如果,我多次的使用不同的函数,那么我要怎么做呢?
tips = pd.read_csv('E:/Datawhale数据分析/PythonForDataAnalysis-master/PythonForDataAnalysis-master/ch08/tips.csv')
print(tips.head())
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
tips['tips_pct'] = tips['tip']/tips['total_bill']
print(tips.head())
total_bill tip sex smoker day time size tips_pct
0 16.99 1.01 Female No Sun Dinner 2 0.059447
1 10.34 1.66 Male No Sun Dinner 3 0.160542
2 21.01 3.50 Male No Sun Dinner 3 0.166587
3 23.68 3.31 Male No Sun Dinner 2 0.139780
4 24.59 3.61 Female No Sun Dinner 4 0.146808
groups = tips.groupby(['day','smoker'])
groups['tips_pct'].mean()
day smoker
Fri No 0.151650Yes 0.174783
Sat No 0.158048Yes 0.147906
Sun No 0.160113Yes 0.187250
Thur No 0.160298Yes 0.163863
Name: tips_pct, dtype: float64
groups['tips_pct'].agg('mean')
day smoker
Fri No 0.151650Yes 0.174783
Sat No 0.158048Yes 0.147906
Sun No 0.160113Yes 0.187250
Thur No 0.160298Yes 0.163863
Name: tips_pct, dtype: float64
print(groups['tips_pct'].agg(['mean'])) #注意与上面的区别
mean
day smoker
Fri No 0.151650Yes 0.174783
Sat No 0.158048Yes 0.147906
Sun No 0.160113Yes 0.187250
Thur No 0.160298Yes 0.163863
print(tips.groupby(['day','smoker']).agg(['mean']))
total_bill tip size tips_pctmean mean mean mean
day smoker
Fri No 18.420000 2.812500 2.250000 0.151650Yes 16.813333 2.714000 2.066667 0.174783
Sat No 19.661778 3.102889 2.555556 0.158048Yes 21.276667 2.875476 2.476190 0.147906
Sun No 20.506667 3.167895 2.929825 0.160113Yes 24.120000 3.516842 2.578947 0.187250
Thur No 17.113111 2.673778 2.488889 0.160298Yes 19.190588 3.030000 2.352941 0.163863
上面的操作大概可以分为两类:1.将数据分隔之后,不断的调用其中某块数据做聚合运算 2.在调用聚合运算时,调用的方法是(['调用方法']),可以显示在运算之后的数据表中
多种的聚合运算:
print(grouped.agg(['mean','sum','std',top_to_top])) #top_to_top函数上面已经调用过
data1 data2 mean sum std top_to_top mean sum std top_to_top
key1
a 1 2 1.414214 2 -0.755429 -1.510857 0.735434 1.040061
g 4 4 NaN 0 0.880569 0.880569 NaN 0.000000
s 2 4 1.414214 2 -0.157120 -0.314239 1.579226 2.233363
以‘没有行索引’的形式返回聚合数据
这个可以使用reset_index()来完成
print(tips.groupby(['day','smoker'],as_index=False).agg(['mean'],as_index=False).reset_index())
day smoker total_bill tip size tips_pctmean mean mean mean
0 Fri No 18.420000 2.812500 2.250000 0.151650
1 Fri Yes 16.813333 2.714000 2.066667 0.174783
2 Sat No 19.661778 3.102889 2.555556 0.158048
3 Sat Yes 21.276667 2.875476 2.476190 0.147906
4 Sun No 20.506667 3.167895 2.929825 0.160113
5 Sun Yes 24.120000 3.516842 2.578947 0.187250
6 Thur No 17.113111 2.673778 2.488889 0.160298
7 Thur Yes 19.190588 3.030000 2.352941 0.163863
关于apply()的一般运用
我们知道表格型数据本身我们要做复杂的运算时,我们需要将数据分隔--运算--聚合。对于pandas提供的运算中apply运用的十分广泛,它可以对多列的数据做运算(这个agg不能完成),然后将分隔并已经运算完成的数据合并起来
tips = pd.read_csv('E:/Datawhale数据分析/PythonForDataAnalysis-master/PythonForDataAnalysis-master/ch08/tips.csv')
print(tips.head())
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
tips['pre_tip'] = tips['tip'] / tips['total_bill']
print(tips.head())
total_bill tip sex smoker day time size pre_tip
0 16.99 1.01 Female No Sun Dinner 2 0.059447
1 10.34 1.66 Male No Sun Dinner 3 0.160542
2 21.01 3.50 Male No Sun Dinner 3 0.166587
3 23.68 3.31 Male No Sun Dinner 2 0.139780
4 24.59 3.61 Female No Sun Dinner 4 0.146808
去pre_tip为参考系,取前五名
grouped = tips.groupby(['smoker','sex'])
def pre_sort (frame,n=5,column = 'pre_tip'):return tips.sort_values(by=column)[-n:]
print(grouped.apply(pre_sort))
total_bill tip sex smoker day time size
smoker sex
No Female 183 23.17 6.50 Male Yes Sun Dinner 4 232 11.61 3.39 Male No Sat Dinner 2 67 3.07 1.00 Female Yes Sat Dinner 1 178 9.60 4.00 Female Yes Sun Dinner 2 172 7.25 5.15 Male Yes Sun Dinner 2 Male 183 23.17 6.50 Male Yes Sun Dinner 4 232 11.61 3.39 Male No Sat Dinner 2 67 3.07 1.00 Female Yes Sat Dinner 1 178 9.60 4.00 Female Yes Sun Dinner 2 172 7.25 5.15 Male Yes Sun Dinner 2
Yes Female 183 23.17 6.50 Male Yes Sun Dinner 4 232 11.61 3.39 Male No Sat Dinner 2 67 3.07 1.00 Female Yes Sat Dinner 1 178 9.60 4.00 Female Yes Sun Dinner 2 172 7.25 5.15 Male Yes Sun Dinner 2 Male 183 23.17 6.50 Male Yes Sun Dinner 4 232 11.61 3.39 Male No Sat Dinner 2 67 3.07 1.00 Female Yes Sat Dinner 1 178 9.60 4.00 Female Yes Sun Dinner 2 172 7.25 5.15 Male Yes Sun Dinner 2pre_tip
smoker sex
No Female 183 0.280535 232 0.291990 67 0.325733 178 0.416667 172 0.710345 Male 183 0.280535 232 0.291990 67 0.325733 178 0.416667 172 0.710345
Yes Female 183 0.280535 232 0.291990 67 0.325733 178 0.416667 172 0.710345 Male 183 0.280535 232 0.291990 67 0.325733 178 0.416667 172 0.710345
如果你的函数的需要传参,你用apply()时,把所需的参数传入的后边就好了
print(grouped.apply(pre_sort,n=4,column='tip'))
total_bill tip sex smoker day time size pre_tip
smoker sex
No Female 59 48.27 6.73 Male No Sat Dinner 4 0.13942423 39.42 7.58 Male No Sat Dinner 4 0.192288212 48.33 9.00 Male No Sat Dinner 4 0.186220170 50.81 10.00 Male Yes Sat Dinner 3 0.196812Male 59 48.27 6.73 Male No Sat Dinner 4 0.13942423 39.42 7.58 Male No Sat Dinner 4 0.192288212 48.33 9.00 Male No Sat Dinner 4 0.186220170 50.81 10.00 Male Yes Sat Dinner 3 0.196812
Yes Female 59 48.27 6.73 Male No Sat Dinner 4 0.13942423 39.42 7.58 Male No Sat Dinner 4 0.192288212 48.33 9.00 Male No Sat Dinner 4 0.186220170 50.81 10.00 Male Yes Sat Dinner 3 0.196812Male 59 48.27 6.73 Male No Sat Dinner 4 0.13942423 39.42 7.58 Male No Sat Dinner 4 0.192288212 48.33 9.00 Male No Sat Dinner 4 0.186220170 50.81 10.00 Male Yes Sat Dinner 3 0.196812
pandas合并groupby_Pandas中级技巧-数据的灵活运算相关推荐
- pandas合并groupby_pandas数据聚合与分组运算——groupby方法
简介 pandas中一类非常重要的操作是数据聚合与分组运算.通过groupby方法能够实现对数据集的拆分.统计.转换等操作,这个过程一气呵成. 在本文中,你将学到: 选取特定列分组: 对分组进行迭代: ...
- pandas合并groupby_pandas实践之GroupBy()
官网地址:https://pandas.pydata.org/docs/reference/groupby.html pandas中对数据进行分组操作的方法,官方有很详细的教程.下面的案例是真实遇到的 ...
- pandas 合并数据
pandas合并数据使用append.比如我要合并一个文件夹里面所有的pic类型的数据,那么先使用os模块,把所有文件名列出, 然后依次读入成dataframe, 读入过程中,一次append, 如果 ...
- pandas python csv_python:pandas合并csv文件的方法(图书数据集成)
数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformatio ...
- pandas数据合并与重塑_PANDAS 数据合并与重塑(concat篇)
pandas作者Wes McKinney 在[PYTHON FOR DATA ANALYSIS]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰 ...
- pandas基础操作大全之数据合并
在pandas 基础操作大全之数据读取&清洗&分析中介绍了pandas常见的数据处理操作,现在继续对pandas常用的数据合并操作做下介绍,便于大家快速了解,也方便后续需要时快速查询. ...
- pandas 分层取5个数据_5个Pandas的高级功能
Pandas是数据分析的黄金标准库. 拥有加载,过滤,操作和浏览数据的功能,因此毫无疑问它是数据科学家的最爱. 我们大多数人自然会坚持Pandas的基本知识. 从CSV文件加载数据,过滤几列,然后直接 ...
- 【Python基础】入门Pandas不可不知的技巧
来源:Python数据之道 作者:Peter 整理:阳哥 如果你用 Python 做数据分析,必然会绕不过 Pandas 的使用,实际上, Python 也是由于 numpy.pandas 等数据科学 ...
- 入门Pandas不可不知的技巧
来源:Python数据之道 作者:Peter 整理:阳哥 今天来跟大家分享 Pandas 的一些常用知识点,文章内容由公众号读者 Peter 创作. 如果你用 Python 做数据分析,必然会绕不过 ...
最新文章
- 音频编辑大师 3.3 注冊名 注冊码
- 使用 Matplotlib 这么久,竟不知道数据可以动起来
- 首届数字中国建设峰会之“数字经济 · 闽江夜话”
- 利用人工智能保护生物多样性
- 《人工智能标准化白皮书(2018版)》发布|附下载
- File System Filter Driver Tutorial
- Java并发编程—ScheduledThreadPoolExecutor原理分析
- Currency determination callback
- 借助Web技术,桌面用户界面将保持活跃
- BZOJ 4143: [AMPPZ2014]The Lawyer( sort )
- SVN下载安装及使用教程
- RNA-Seq丰度计算方法
- python发送短信接口_Python发短信接口
- python k线斜率计算公式_通达信公式K线斜率+选股指标源码
- 网站地图是什么,怎么制作和查看网站的地图呢?
- 删除K个数字,使剩下的数字串最大(最大数字)
- Android代码混淆工具Proguard学习
- [BZOJ2121]-字符串游戏-字符串dp
- fputc函数重写实现printf重定向
- DB2利用db2advis进行查询优化