Datawhale数据分析思考与问题解决
软件安装及学习中碰到的问题及解决办法链接附上
参考《利用Python进行数据分析·第2版》 电子版 https://www.jianshu.com/p/04d180d90a3f --very good!!
‘conda’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。解决办法“
添加环境变量:
我的电脑—右键属性—高级系统设置—环境变量—系统变量—Path—双击进入—新建—浏览—找到Anaconda和Scripts的路径添加,然后点击确定就好了。”
https://blog.csdn.net/ITLearnHall/article/details/81708148 //安装Anaconda的软件及环境
https://blog.csdn.net/m0_47931820/article/details/114242664 //CondaHTTPError错误(以open3d安装为例)
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ —清华大学开源软件镜像站
https://blog.csdn.net/qq_43529415/article/details/100847887?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allbaidu_landing_v2~default-6-100847887.nonecase&utm_term=%E5%B7%B2%E7%BB%8F%E8%A3%85%E4%BA%86python%20%E8%BF%98%E8%83%BD%E8%A3%85anaconda%E4%B9%88&spm=1000.2123.3001.4430
//python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解
https://www.toutiao.com/i6867758223865152014?wid=1624535564646-- wifi接收器
https://bbs.huaweicloud.com/blogs/244886 --VSCode安装教程(超详细)
在Pycharm 显示数据不全,可以使用pd.set_option函数
如下图所示:1、pd.set_option(‘expand_frame_repr’, False)
True就是可以换行显示。设置成False的时候不允许换行
2、pd.set_option(‘display.max_rows’, 10)
pd.set_option(‘display.max_columns’, 10)
显示的最大行数和列数,如果超额就显示省略号,这个指的是多少个dataFrame的列。如果比较多又不允许换行,就会显得很乱。
3、pd.set_option(‘precision’, 5)
显示小数点后的位数
4、pd.set_option(‘large_repr’, A)
truncate表示截断,info表示查看信息,一般选truncate
5、pd.set_option(‘max_colwidth’, 5)
列长度
6、pd.set_option(‘chop_threshold’, 0.5)
绝对值小于0.5的显示0.0
7、pd.set_option(‘colheader_justify’, ‘left’)
显示居中还是左边,
8、pd.set_option(‘display.width’, 200)
横向最多显示多少个字符, 一般80不适合横向的屏幕,平时多用200.
1 第一章:数据加载
1.1.1 任务一:导入numpy和pandas
import numpy as np
import pandas as pd
【提示】安装Pycharm numpy和pandas标红波浪线时,点击安装即可。
1.1.2 任务二:载入数据
(1) 使用相对路径载入数据
(2) 使用绝对路径载入数据
df = pd.read_csv(‘train.csv’)
df.head(3)
使用os.getcwd()查看当前工作目录方法:
print(‘当前目录是%s’%(os.getcwd())
pd.read_csv写正确拼写,不然报错好久没注意到这里,以为引用错误。
相对路径载入数据时,需要把数据文件安置在和.py同个文件夹下就可以。可通过查看当前工作目录放置文件位置。
相对路径读取正确结果如下:
绝对路径读取报错:需要加上文件名啊 这个不能忘记的。。。
修改后正确结果如下:**
1.在文件路径使用 \:在 \ 前多加一个\ ;或者 在文件路径前加上 r
2.使用open函数打开路径中含有中文的文件;或者 使用engine=‘python’。
参考:https://blog.csdn.net/weixin_45919895/article/details/110004423
pd.read_table() 表现与pd.read_csv()不同(能读出来就行 这块有点疑问)
如下图pd.read_table()
pd.read_csv()如下图
pd.read_csv()和pd.read_table()的不同
pd.read_csv() 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号
pd.read_table() 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符“\t”
如果想pd.read_csv()和pd.read_table()效果一样,需要怎么做?
指定分隔符
pd.read_table(’’, sep=’,’)
了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?
文件类型 使用
| tsv | 使用 \t 作为字段值的分隔符|
|csv| 使用 , 作为字段值的分隔符|
#加载'.tsv'
pd.read_csv('文件名', sep='\t')
pd.read_table('文件名')
#加载'.csv'
pd.read_csv('文件名')
pd.read_table('文件名', sep=',')
1.1.3 任务三:每1000行为一个数据模块,逐块读取
chunker = pd.read_csv(‘train.csv’, chunksize=1000)
处理大文件时,只需要读取文件的一小部分或逐块对文件进行迭代
数据的逐块读取 原因:在处理很大的文件时,可将大文件拆分成小块按块读入后,这样可减少内存的存储与计算资源。数据的处理和清洗经常使用分块的方式处理,这样能大大降低内存的使用量,但相对更耗时一些。
read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader,需要用for循环来输出数据内容
1.1.4 任务四:将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据] #加上header=0去掉原来的英文表头
另一种修改列名的方法:可以修改部分或者全部 Inplace参数 是决定替换是否生效
第三种方法:该方法的新列名必须与原列名一一对应
df.info() 查看索引、数据类型和内存信息
df2.isnull()
df2.isnull().head(2)
print(df2.isnull().tail(2))
判断前、后两行是否为空,为空的地方返回True,其余地方返回False.
查看数据多少行 多少列 (注意shape后面不带小括号)
df.unique() 快速查看数据列有哪些分类内容,类似groupby
参考链接:https://blog.csdn.net/feizxiang3/article/details/93380525
nunique() Return number of unique elements in the object.即返回的是唯一值的个数
查看数据的标准信息
df.head(n) 查看DataFrame对象的前n行
df.tail(n) 查看DataFrame对象的最后n行
df.shape 查看数据的行列数各是多少
df.info() 查看索引、数据类型和内存信息
df.describe(percentiles=[.05, .25, .75, .95]) 查看数值型列的汇总统计,返回计数、均值、标准差、最小最大值、25%50%75%分位数,percentiles0.05,0.95分位数
df.unique() 快速查看数据列有哪些分类内容,类似groupby
s.value_counts(dropna=False) 查看Series对象的唯一值和计数
df.apply(pd.Series.value_counts) 查看DataFrame对象中每一列的唯一值和计数
df.sum() 返回所有列的求和值
df.mean() 返回所有列的均值
df.corr() 返回列与列之间的相关系数
df.count() 返回每一列中的非空值的个数
df.max() 返回每一列的最大值
df.min 返回每一列的最小值
df.median() 返回每一列的中位数
df.std() 返回每一列的标准差
#注意:不同的操作系统保存下来可能会有乱码。大家可以加入encoding='GBK' 或者 ’encoding = ’uft-8‘‘
df.to_csv(‘train_chinese.csv’)
pandas中有两个数据类型DateFrame和Series
数据类型 Series
数据类型DateFrame
查看DataFrame数据的每列的名称
df.columns
查看"Cabin"这列的所有值 两种方法
删除多余的列
参考 : https://www.cnblogs.com/datasnail/p/9767158.html
test_1.drop([‘a’],axis=1,inplace=True) --其他删除列的方式
test_1.head(3)
如果想要完全的删除你的数据结构,使用inplace=True,使用inplace就将原数据覆盖了
删除某一行,在上面删除列操作的时候也稍有提及**,如果不加axis=1,则默认按照行号进行删除**,例如要删除第0行和第1行: (删除列如下)
我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
以"Age"为条件,将年龄在10岁以上和50岁以下的乘 客信息显示出来,并将这个数据命名为midage
【提示】了解pandas的条件筛选方式以及如何使用交集和并集操作**#多条件必须加上()**
【pandas】reset_index函数详解 reset_index 函数 意思就是重新排序 因为通过选取符合条件的行或者列 原来的行与列序号并不是顺序的,所以通过此 函数 可以重新顺序排列 —重新设置索引因为切片可能会造成索引缺失
第100行的"Pclass"和"Sex"的数据显示出来 midage.loc[[100],[‘Pclass’,‘Sex’]]
KeyError: “None of [Int64Index([8888], dtype=‘int64’)] are in the [index]” 这个错误考虑是否索引过大,超过范围。
iloc和loc的异同由下面两图可看出 loc——通过行标签索引行数据
iloc——通过行号索引行数据
pandas.loc/iloc/ix的区别
大多数时候我们都是想根据列的值来排序,所以,将你构建的DataFrame中的数据根据某一列,升序排列
frame.sort_values(by=‘c’, ascending=True) sort_values这个函数中by参数指向要排列的列,ascending参数指向排序的方式(升序还是降序)
利用Pandas对示例数据进行排序
利用Pandas进行算术计算,计算两个DataFrame数据相加结果 提醒:两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。
任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
还是用之前导入的chinese_train.csv如果我们想看看在船上,最大的家族有多少人(‘兄弟姐妹个数’+‘父母子女个数’),我们该怎么做呢?
max(text[‘兄弟姐妹个数’] + text[‘父母子女个数’])
是的,如上,很简单,我们只需找出兄弟姐妹个数和父母子女个数之和最大的数就行,先让这两列相加返回一个DataFrame,然后用max函数求出最大值
学会使用Pandas describe()函数查看数据基本统计信息
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值 分位差主要用于测度顺序数据的离散程度。
50% : 样本数据50%的时候的值 **分位数的意义
75% : 样本数据75%的时候的值
max : 样本数据的最大值
2 第二章:数据清洗及特征处理
数据清洗简述
我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗,本章我们将学习缺失值、重复值、字符串和数据转换等操作,将数据清洗成可以分析或建模的样子。
2.1 缺失值观察与处理
(1) 请查看每个特征缺失值个数 df.info() df.isnull().sum()
(2) 请查看Age, Cabin, Embarked列的数据 df[[‘Age’,‘Cabin’,‘Embarked’]].head(3)
2.1.2 任务二:对缺失值进行处理
**(1)处理缺失值一般有几种思路**
直接使用含有缺失值的特征;删除含有缺失值的特征(该方法在包含缺失值的属性含有大量缺失值而仅仅包含极少量有效值时是有效的);缺失值补全。
(2)请尝试对Age列的数据的缺失值进行处理
1)np.nan不是空对象
2)对列表中的nan进行操作时不能用‘==np.nan’来判断。只能用np.isnan()来操作。
3)np.nan的数据类型是float.
(1) 处理缺失值一般有几种思路:
1.可以丢弃带有缺失值的项,但是会减少sample数,信息损失
2.用统计特征值,比如平均数,中位数,方差等填充
3.用贝叶斯方法
(2) 请尝试对Age列的数据的缺失值进行处理
train_df[train_df[‘Age’].isnull()] = 0
train_df[train_df[‘Age’]==np.nan] = 0
None在缺失值特征为float64类型时检索不到,所以用np.nan
(3)使用不同的方法直接对整张表的缺失值进行处理
train_df.dropna()
重复值观察与处理
查看重复值
train_df[train_df.duplicated()]
去除有重复值的记录
train_df.drop_duplicates()
从纯文本Name特征里提取出Titles的特征(所谓的Titles就是Mr,Miss,Mrs等)
df[‘Title’] = df.Name.str.extract(’([A-Za-z]+).’, expand=False)
df.head()
2.4 数据的合并
2.4.1 任务一:将data文件夹里面的所有数据都载入,与之前的原始数据相比,观察他们的之间的关系
text_left_up = pd.read_csv(“data/train-left-up.csv”)
text_left_down = pd.read_csv(“data/train-left-down.csv”)
text_right_up = pd.read_csv(“data/train-right-up.csv”)
text_right_down = pd.read_csv(“data/train-right-down.csv”)
text_left_up.head()
text_left_down.head()
text_right_down.head()
text_right_up.head()
任务二:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
result_up.head()
2.4.3 任务三:使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。
list_down=[text_left_down,text_right_down]
result_down = pd.concat(list_down,axis=1)
result = pd.concat([result_up,result_down])
result.head()
2.4.4 任务四:使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down)
result.head()
任务二:计算泰坦尼克号男性与女性的平均票价
df = text[‘Fare’].groupby(text[‘Sex’])
means = df.mean()
任务三:统计泰坦尼克号中男女的存活人数
survived_sex = text[‘Survived’].groupby(text[‘Sex’]).sum()
survived_sex.head()
【提示:】表中的存活那一栏,可以发现如果还活着记为1,死亡记为0
text.groupby(‘Sex’).agg({‘Fare’: ‘mean’, ‘Pclass’: ‘count’}).rename(columns=
{‘Fare’: ‘mean_fare’, ‘Pclass’: ‘count_pclass’})
#不同年龄的存活人数
survived_age = text[‘Survived’].groupby(text[‘Age’]).sum()
survived_age.head()
#找出最大值的年龄段
survived_age[survived_age.values==survived_age.max()]
_sum = text[‘Survived’].sum()
print(_sum)
#首先计算总人数
_sum = text[‘Survived’].sum()
print(“sum of person:”+str(_sum))
precetn =survived_age.max()/_sum
print(“最大存活率:”+str(precetn))
开始之前,导入numpy、pandas以及matplotlib包和数据
加载所需的库
如果出现 ModuleNotFoundError: No module named ‘xxxx’
你只需要在终端/cmd下 pip install xxxx 即可
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#加载result.csv这个数据
result=pd.read_csv(‘F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第二章项目集合/result.csv’)
result.head()
2.7.1 任务一:跟着书本第九章,了解matplotlib,自己创建一个数据项,对其进行基本可视化
data=np.arange(10)
plt.plot(data)
fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,3)
ax1.plot(np.random.randn(50).cumsum(),‘k–’)
ax2.hist(np.random.randn(100),bins=20,color=‘b’)
ax3.scatter(np.arange(30),np.arange(30)+3*np.random.randn(30))
<matplotlib.collections.PathCollection at 0x1c0fb1aa710>
【思考】最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势)
#思考回答
折线图适用于某个属性值随时间变化的趋势
散点图适用于看两个变量之间的相关性
柱状图适用于查看整体数据的分布情况
直方图适用于观察数据频率分布情况
2.7.2 任务二:可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)。
#代码编写
sex=result.groupby(‘Sex’)[‘Survived’].sum()
sex.plot.bar()
plt.title(‘Survived conts based on sex’)
从男女生存数量来看,女性存活率较高。
2.7.3 任务三:可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)。
result.groupby([‘Sex’,‘Survived’])[‘Survived’].count()
result.groupby([‘Sex’,‘Survived’])[‘Survived’].count().unstack()
Survived 0 1
Sex
female 81 233
male 468 109
result.groupby([‘Sex’,‘Survived’])[‘Survived’].count().unstack().plot(kind=‘bar’,stacked=‘True’)
plt.title(‘Survived_count’)
plt.xlabel(‘Sex’)
plt.ylabel(‘survived_count’)
Text(0, 0.5, ‘survived_count’)
2.7.4 任务四:可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)
【提示】对于这种统计性质的且用折线表示的数据,你可以考虑将数据排序或者不排序来分别表示。看看你能发现什么?
计算不同票价中生存与死亡人数 1表示生存,0表示死亡
#数据不排序
fs=result.groupby([‘Fare’])[‘Survived’].value_counts()
fs.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1c0fb315ef0>
#数据排序
fs1=result.groupby([‘Fare’])[‘Survived’].value_counts().sort_values(ascending=False)
fs1.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1c0fb3f0b38>
不排序的数据看起来没有波动很大,没有明显的趋势;经过降序排列后,可以发现折线也呈现降序的趋势,所以票价和生存率没有啥关系?
2.7.5 任务五:可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)
ps=result.groupby([‘Pclass’])[‘Survived’].count()
#不同仓位等级的人生存情况
ps.plot(kind=‘bar’)
从图中可以看出,仓位等级最高的3,生存人数也是最多的
import seaborn as sns
sns.countplot(x=‘Pclass’,hue=‘Survived’,data=result)
数据可视化,感受和总结
#思考题回答
性别与存活率有关系:女性的存活率要更高
票价似乎和存活率没啥关系
仓位等级越高存活率也越高
2.7.6 任务六:可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)
#代码编写
#result.groupby([‘Age’])[‘Survived’].value_counts()
sns.countplot(x=‘Age’,hue=‘Survived’,data=result)
<matplotlib.axes._subplots.AxesSubplot at 0x1c0fd2f9198>
#整体的年龄分布情况
sns.distplot(result[‘Age’], hist=False, rug=False)
2.7.7 任务七:可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)
#代码编写
result.Age[result[‘Pclass’]==1].plot(kind=‘kde’)
result.Age[result[‘Pclass’]==2].plot(kind=‘kde’)
result.Age[result[‘Pclass’]==3].plot(kind=‘kde’)
【思考】上面所有可视化的例子做一个总体的分析,你看看你能不能有自己发现
#思考题回答
女性存活率更高
仓位等级高的人存活率更高
中青年存活率更高
【总结】到这里,我们的可视化就告一段落啦,如果你对数据可视化极其感兴趣,你还可以了解一下其他可视化模块,如:pyecharts,bokeh等。
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用来正常显示中文标签
plt.rcParams[‘axes.unicode_minus’] = False # 用来正常显示负号
plt.rcParams[‘figure.figsize’] = (10, 6) # 设置输出图片大小
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用来正常显示中文标签
plt.rcParams[‘axes.unicode_minus’] = False # 用来正常显示负号
plt.rcParams[‘figure.figsize’] = (10, 6) # 设置输出图片大小
在进行模型选择之前我们需要先知道数据集最终是进行监督学习还是无监督学习
【思考】
什么情况下切割数据集的时候不用进行随机选取
思考回答
数据集是时序类型的,需要按照时间顺序来排列
【思考】
为什么线性模型可以进行分类任务,背后是怎么的数学关系
对于多分类问题,线性模型是怎么进行分类的
逻辑回归主要用于分类,与我熟悉的线性回归模型相比,两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型表达形式上,逻辑回归是线性回归套上了一个Sigmoid函数。线性回归假设响应变量服从正态分布,逻辑回归假设响应变量服从伯努利分布。同时,线性回归是根据最小二乘法求解模模型自变量的系数,而逻辑回归是根据似然函数。
对于多分类而言,将多个二分类的逻辑回归组合,即可实现多分类。
模型评估
模型评估是为了知道模型的泛化能力。
交叉验证(cross-validation)是一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面。
在交叉验证中,数据被多次划分,并且需要训练多个模型。
最常用的交叉验证是 k 折交叉验证(k-fold cross-validation),其中 k 是由用户指定的数字,通常取 5 或 10。
准确率(precision)度量的是被预测为正例的样本中有多少是真正的正例
召回率(recall)度量的是正类样本中有多少被预测为正类
f-分数是准确率与召回率的调和平均
Datawhale数据分析思考与问题解决相关推荐
- DataWhale数据分析组队学习——Day2
DataWhale数据分析组队学习--Day2 引言 读取数据 数据预处理 总结 引言 今天是第二天,花了很多时间去搜索网页爬虫的资料,具体有几种方法,要考虑到从不同的网页抓取有不同的方法,一般用的方 ...
- Datawhale数据分析课程第二章
Datawhale数据分析课程第二章 准备工作 数据清洗及特征处理 相关定义 缺失值观察与处理 任务一:缺失值观察 (1) 请查看每个特征缺失值个数 (2) 请查看Age, Cabin, Embark ...
- Datawhale数据分析教程来了!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale开源 贡献者:陈安东.金娟娟.杨佳达.老表 开源初心 当我入门数据分析时,用的 ...
- Datawhale数据分析课程第三章建模与评估
模型搭建和评估 建模 导入各种库及可视化设置 模型的选择路径 模型搭建 任务一:切割训练集和测试集 任务二:模型创建 创建基于线性模型的分类模型(逻辑回归) 创建基于树的分类模型(决策树.随机森林) ...
- Datawhale数据分析第一章第二节:Pandas基础
复习:数据分析的第一步,加载数据我们已经学习完毕了.当数据展现在我们面前的时候,我们所要做的第一步就是认识他,今天我们要学习的就是了解字段含义以及初步观察数据. 1 第一章:数据载入及初步观察 1.4 ...
- 2_数据分析—认识pandas
文章目录 一.认识 pandas 1.1 pandas有两个数据类型DateFrame和Series 1.2 载入数据 1.3 查看DataFrame数据的每列的名称 1.4 查看"Cabi ...
- 我们与Datawhale的故事!
我们的征途是星辰大海 Take easy just like fly to the moon 我们的2020年 或许有收获和成长 也有遗憾和悲伤 有如天外之喜,也有晴天霹雳 人间百味,意趣悠长 时间见 ...
- 《动手学数据分析》开源教程完整发布!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈安东,湖南大学,Datawhale成员 1. 开源初衷 对于任何 ...
- 【资源】《动手学数据分析》开源教程完整发布!
作者:陈安东,湖南大学,Datawhale成员 1. 开源初衷 对于任何一个将来要实际运用的技能,通过实战,自己亲自将一行行代码敲出来,然后达到自己想要的效果,这个过程是最好的学习方式. 最开始接触了 ...
- 《商业数据分析》读书笔记(一)
https://learning.oreilly.com/library/view/data-science-for/9781449374273/ 这本书重点在于讲解商业数据分析背后的重点原则.帮助人 ...
最新文章
- 文本转换成htmldocument
- Splay(区间翻转) 模板
- 使用OpenCV进行相机标定
- 如何处理班级过多的问题
- iptables: Resource temporarily unavailable.问题
- python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
- android垂直排列元素_元素的视图属性之client
- 算法48---原子的数量【栈】
- 对于quartz定时任务设置结束时间
- softice调试驱动程序
- WORD出错:设置为稿纸后,右键的字体、段落项目变灰
- echart 重新加载
- Caché Global
- 记一次某众测的靶场考核
- windows下qemu的安装与设置环境变量
- 通信原理 单、双极性码的归零和非归零01等概下的波形和功率谱密度的matlab实现
- 2020最新中国上市公司市值500强:阿里、腾讯领跑,百度掉出前20,附全榜单
- 战国形势图[zhuan]
- 浅谈数字化管道建设[胜利油田集输信息中心 常贵宁]
- 时间复杂度 P/NP/NPC
热门文章
- 2021上海酵素展暨中国酵素节资讯食用酵素的营养功效及研究进展
- 微信小程序开发---微信获取微信绑定手机号并登录流程
- selenium+java打开新标签页方法
- 用dxdiag命令show计算机系统配置
- stanford coreNLP简单使用
- matlab ols hac,R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
- 【arXiv 2021】Cluster Contrast for Unsupervised Person Re-Identification(CCU)
- PyQt4转PyQt5心得
- JavasScript 第一天课 课后笔记 2022.3.21
- java语言基础 一张纸的厚度0.08mm,求对折对次之后能达到珠穆朗玛峰的高度(8844)用(循环求while)