目录

  • 前言
  • 1.Pandas vs Numpy
  • 2.基本介绍
  • 3.选择数据
  • 4.设置值
  • 5.处理丢失的数据
  • 6.pandas导入导出
  • 7.pandas合并concat
  • 8.pandas合并merge
  • 9.pandas plot画图
  • 结语
  • 参考

前言

莫烦老师Pandas教程,将所有代码和对应的输出记录在博客中,方便自己后续查看

作者:莫烦Python

转自:https://mofanpy.com/tutorials/data-manipulation/pandas/

视频:[【莫烦Python】Numpy & Pandas(数据处理教程)]

代码:https://github.com/MorvanZhou/tutorials/tree/master/numpy%26pandas

环境:python-3.9.13 pandas-1.4.4

1.Pandas vs Numpy

numpy是以矩阵为基础的数据计算模块,是数值计算的扩展包

pandas主要做数据处理,提供了DataFrame的数据结构,契合统计分析的表结构,可用numpy进行计算

numpy是python中的列表,pandas是python中的字典

pandas记录的信息可以特别丰富,另外pandas用于处理数据的功能也比较多,信息种类也更丰富,但是运行速度稍微比numpy慢

在做少量的数据分析时,因为不涉及到机器学习的模型运算等,可以用Pandas,但是如果要模型训练,训练过程中还一直调用数据处理的功能,则可选用Numpy来做

总结:Pandas是Numpy的封装库,继承了Numpy的很多优良传统,也具备了丰富的功能组件,但是得分情况来酌情选择要使用的工具。

2.基本介绍

Pandas基于两种数据类型:series和dataframe

  • Series:一种类似于一维数组的对象,是由一组数据以及一组与之相关的数据标签(即索引)组成
  • DataFrame:一个表格型的数据结构,包含一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典

参考自pandas教程:series和dataframe

import pandas as pd
import numpy as np# Series数据类型
s = pd.Series([1, 3, 6, np.nan, 44, 1])
print("s:\n", s, "\n")# DataFrame数据类型及创建方式
dates = pd.date_range('20230106', periods=6)
print("dates:\n", dates, "\n")df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=['a', 'b', 'c', 'd'])
print("df:\n", df, "\n")df1 = pd.DataFrame(np.arange(12).reshape(3,4))
print("df1:\n", df1, "\n")df2 = pd.DataFrame({'A' : 1.,'B' : pd.Timestamp('20130102'),'C' : pd.Series(1,index=list(range(4)),dtype='float32'),'D' : np.array([3] * 4,dtype='int32'),'E' : pd.Categorical(["test","train","test","train"]),'F' : 'foo'})
print("df2:\n", df2, "\n")# DataFrame属性
print("df2.dtypes:\n", df2.dtypes, "\n")   # 数据类型
print("df2.index:\n", df2.index, "\n")    # 每一行
print("df2.columns:\n", df2.columns, "\n")  # 每一列
print("df2.values:\n", df2.values, "\n")   # NDFrame的Numpy表示
print("df2.describe:\n", df2.describe(), "\n")   # 运算数字
print("df2.T:\n", df2.T, "\n")
print("df2.sort_index:\n", df2.sort_index(axis=1, ascending=False), "\n")  # 排序
print("df2.sort_values:\n", df2.sort_values(by='E'), "\n")

运行结果如下:

s:0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64 dates:DatetimeIndex(['2023-01-06', '2023-01-07', '2023-01-08', '2023-01-09','2023-01-10', '2023-01-11'],dtype='datetime64[ns]', freq='D') df:a         b         c         d
2023-01-06 -1.161849 -1.337222 -1.909200 -0.646599
2023-01-07  0.399974  1.303316  0.984053  0.276056
2023-01-08  1.902331 -2.203783  1.081992  0.107517
2023-01-09  1.009825  0.493630 -0.075483 -1.189449
2023-01-10  0.438570  0.399921 -0.329971 -0.592417
2023-01-11  1.082420 -0.428190  0.929953 -0.821798df1:0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11df2:A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foodf2.dtypes:A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: objectdf2.index:Int64Index([0, 1, 2, 3], dtype='int64')df2.columns:Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object') df2.values:[[1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo'][1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo'][1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo'][1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo']]df2.describe:A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0df2.T:0                    1                    2                    3
A                  1.0                  1.0                  1.0                  1.0
B  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00
C                  1.0                  1.0                  1.0                  1.0
D                    3                    3                    3                    3
E                 test                train                 test                train
F                  foo                  foo                  foo                  foodf2.sort_index:F      E  D    C          B    A
0  foo   test  3  1.0 2013-01-02  1.0
1  foo  train  3  1.0 2013-01-02  1.0
2  foo   test  3  1.0 2013-01-02  1.0
3  foo  train  3  1.0 2013-01-02  1.0 df2.sort_values:A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
2  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
3  1.0 2013-01-02  1.0  3  train  foo

3.选择数据

在Pandas中,有丰富的选取数据方式,主要分为以下几种:

  • 选Column or Row(index)

  • loc

  • iloc

  • 条件过滤筛选

import pandas as pd
import numpy as npdates = pd.date_range('20230106', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['A', 'B', 'C', 'D'])# select by label:Column or Row(index)
print("df:\n", df, "\n")
print("df['A'] or df.A:\n", df['A'], df.A, "\n")
print("df[0:3]:\n", df[0:3], "\n", "df['20230107':'20230108']:\n", df['20230107':'20230108'], "\n")# select by label:loc
print("df.loc['20230106']:\n", df.loc['20230106'], "\n")
print("df.loc[:,['A', 'B']]:\n", df.loc[:,['A', 'B']], "\n")
print("df.loc['20230106',['A', 'B']]:\n", df.loc['20230106',['A', 'B']], "\n")# select by position:iloc
print("df.iloc[3:5, 1:3]:\n", df.iloc[3:5, 1:3], "\n")# boolean indexing
print("df[df.A > 8]:\n", df[df.A > 8], "\n")

运行结果如下:

df:A   B   C   D
2023-01-06   0   1   2   3
2023-01-07   4   5   6   7
2023-01-08   8   9  10  11
2023-01-09  12  13  14  15
2023-01-10  16  17  18  19
2023-01-11  20  21  22  23df['A'] or df.A:2023-01-06     0
2023-01-07     4
2023-01-08     8
2023-01-09    12
2023-01-10    16
2023-01-11    20
Freq: D, Name: A, dtype: int32 2023-01-06     0
2023-01-07     4
2023-01-08     8
2023-01-09    12
2023-01-10    16
2023-01-11    20
Freq: D, Name: A, dtype: int32df[0:3]:A  B   C   D
2023-01-06  0  1   2   3
2023-01-07  4  5   6   7
2023-01-08  8  9  10  11df['20230107':'20230108']:A  B   C   D
2023-01-07  4  5   6   7
2023-01-08  8  9  10  11df.loc['20230106']:A    0
B    1
C    2
D    3
Name: 2023-01-06 00:00:00, dtype: int32df.loc[:,['A', 'B']]:A   B
2023-01-06   0   1
2023-01-07   4   5
2023-01-08   8   9
2023-01-09  12  13
2023-01-10  16  17
2023-01-11  20  21df.loc['20230106',['A', 'B']]:A    0
B    1
Name: 2023-01-06 00:00:00, dtype: int32df.iloc[3:5, 1:3]:B   C
2023-01-09  13  14
2023-01-10  17  18df[df.A > 8]:A   B   C   D
2023-01-09  12  13  14  15
2023-01-10  16  17  18  19
2023-01-11  20  21  22  23

4.设置值

Pandas设置值可以先通过前面的几种方式选取完数据后进行修改

import pandas as pd
import numpy as npdates = pd.date_range('20230106', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['A', 'B', 'C', 'D'])
print('修改前的df:\n', df, "\n")df.iloc[2, 2] = 666
df.loc["20230106", "B"] = 222
df.A[df.A > 4] = 0
df['E'] = np.nan
df['F'] = pd.Series([1,2,3,4,5,6], index=dates)print('修改后的df:\n', df, "\n")

运行结果如下:

修改前的df:A   B   C   D
2023-01-06   0   1   2   3
2023-01-07   4   5   6   7
2023-01-08   8   9  10  11
2023-01-09  12  13  14  15
2023-01-10  16  17  18  19
2023-01-11  20  21  22  23修改后的df:A    B    C   D   E  F
2023-01-06  0  222    2   3 NaN  1
2023-01-07  4    5    6   7 NaN  2
2023-01-08  0    9  666  11 NaN  3
2023-01-09  0   13   14  15 NaN  4
2023-01-10  0   17   18  19 NaN  5
2023-01-11  0   21   22  23 NaN  6

5.处理丢失的数据

  • 移除Nan的数据

    • df.dropna
  • 填充Nan的数据
    • df.fillna
  • 判断是否包含Nan的数据
    • df.isnull()
import pandas as pd
import numpy as npdates = pd.date_range('20230106', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['A', 'B', 'C', 'D'])
df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nanprint(df.dropna(axis=0, how='all'))  # how = {'any', 'all}print(df.fillna(value=0))print(np.any(df.isnull()) == True)

运行结果如下:

             A     B     C   D
2023-01-06   0   NaN   2.0   3
2023-01-07   4   5.0   NaN   7
2023-01-08   8   9.0  10.0  11
2023-01-09  12  13.0  14.0  15
2023-01-10  16  17.0  18.0  19
2023-01-11  20  21.0  22.0  23A     B     C   D
2023-01-06   0   0.0   2.0   3
2023-01-07   4   5.0   0.0   7
2023-01-08   8   9.0  10.0  11
2023-01-09  12  13.0  14.0  15
2023-01-10  16  17.0  18.0  19
2023-01-11  20  21.0  22.0  23
True

6.pandas导入导出

pandas导入导出文件主要有以下几种:

  • Excel文件

    • pd.read_excel()
    • df.to_excel()
  • csv或txt等纯文本文件
    • pd.read_csv()
    • df.to_csv()
  • 其他
    • pd.read_clipboard()
    • pd.read_html()
import pandas as pd# read from
data = pd.read_csv("student.csv")
print(data)# save to
data.to_pickle("student.pickle")

运行结果如下:

    Student ID  name   age  gender
0         1100  Kelly   22  Female
1         1101    Clo   21  Female
2         1102  Tilly   22  Female
3         1103   Tony   24    Male
4         1104  David   20    Male
5         1105  Catty   22  Female
6         1106      M    3  Female
7         1107      N   43    Male
8         1108      A   13    Male
9         1109      S   12    Male
10        1110  David   33    Male
11        1111     Dw    3  Female
12        1112      Q   23    Male
13        1113      W   21  Female

7.pandas合并concat

import pandas as pd
import numpy as np# concatenating ignore_index
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
print("df1:\n", df1, "\n")
print("df2:\n", df2, "\n")
print("df3:\n", df3, "\n")
res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
print("res:\n", res, "\n")# join, ['inner', 'outer']
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d', 'e'], index=[2,3,4])
print("df1:\n", df1, "\n")
print("df2:\n", df2, "\n")
res1 = pd.concat([df1, df2], join='outer')
res2 = pd.concat([df1, df2], join='inner', ignore_index=True)
print("res1:\n", res1, "\n")
print("res2:\n", res2, "\n")

运行结果如下:

df1:a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0 df2:a    b    c    d
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0 df3:a    b    c    d
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0
2  2.0  2.0  2.0  2.0 res:a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
6  2.0  2.0  2.0  2.0
7  2.0  2.0  2.0  2.0
8  2.0  2.0  2.0  2.0df1:a    b    c    d
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0df2:b    c    d    e
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0res1:a    b    c    d    e
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
3  0.0  0.0  0.0  0.0  NaN
2  NaN  1.0  1.0  1.0  1.0
3  NaN  1.0  1.0  1.0  1.0
4  NaN  1.0  1.0  1.0  1.0res2:b    c    d
0  0.0  0.0  0.0
1  0.0  0.0  0.0
2  0.0  0.0  0.0
3  1.0  1.0  1.0
4  1.0  1.0  1.0
5  1.0  1.0  1.0

8.pandas合并merge

concat可以一次性合并多个df,可以左右,也可以上下拼接,但是merge是用来针对两张df做左右拼接的

import pandas as pd# merging two df by key/keys. (may be used in database)
# simple example
print("==========simple example==========")
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']})
print("left:\n", left, "\n")
print("right:\n", right, "\n")
res = pd.merge(left, right, on='key')
print("res:\n", res, "\n")# consider two keys
print("==========consider two keys==========")
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']})
print("left:\n", left, "\n")
print("right:\n", right, "\n")
# how = ['left', 'right', 'outer', 'inner']
res = pd.merge(left, right, on=['key1', 'key2'], how='inner')   # 默认是inner
print("res:\n", res, "\n")# indicator(显示怎样进行merge的)
print("==========indicator==========")
df1 = pd.DataFrame({'col1':[0,1], 'col_left':['a','b']})
df2 = pd.DataFrame({'col1':[1,2,2],'col_right':[2,2,2]})
print("df1:\n", df1, "\n")
print("df2:\n", df2, "\n")
res = pd.merge(df1, df2, on='col1', how='outer', indicator=True)    # 默认是False
print("res:\n", res, "\n")
res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_column')# merged by index
print("==========merged by index==========")
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']},index=['K0', 'K1', 'K2'])
right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],'D': ['D0', 'D2', 'D3']},index=['K0', 'K2', 'K3'])
print("left:\n", left, "\n")
print("right:\n", right, "\n")
# left_index right_index
res = pd.merge(left, right, left_index=True, right_index=True, how="outer")
print("res:\n", res, "\n")
res = pd.merge(left, right, left_index=True, right_index=True, how='inner')# handle overlapping
print("==========handle overlapping==========")
boys = pd.DataFrame({'k': ['K0', 'K1', 'K2'], 'age': [1, 2, 3]})
girls = pd.DataFrame({'k': ['K0', 'K0', 'K3'], 'age': [4, 5, 6]})
print("boys:\n", boys, "\n")
print("girls:\n", girls, "\n")
res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='inner')
print("res:\n", res, "\n")

运行结果如下:

==========simple example==========
left:key   A   B
0  K0  A0  B0
1  K1  A1  B1
2  K2  A2  B2
3  K3  A3  B3right:key   C   D
0  K0  C0  D0
1  K1  C1  D1
2  K2  C2  D2
3  K3  C3  D3res:key   A   B   C   D
0  K0  A0  B0  C0  D0
1  K1  A1  B1  C1  D1
2  K2  A2  B2  C2  D2
3  K3  A3  B3  C3  D3==========consider two keys==========
left:key1 key2   A   B
0   K0   K0  A0  B0
1   K0   K1  A1  B1
2   K1   K0  A2  B2
3   K2   K1  A3  B3right:key1 key2   C   D
0   K0   K0  C0  D0
1   K1   K0  C1  D1
2   K1   K0  C2  D2
3   K2   K0  C3  D3res:key1 key2   A   B   C   D
0   K0   K0  A0  B0  C0  D0
1   K1   K0  A2  B2  C1  D1
2   K1   K0  A2  B2  C2  D2==========indicator==========
df1:col1 col_left
0     0        a
1     1        bdf2:col1  col_right
0     1          2
1     2          2
2     2          2res:col1 col_left  col_right      _merge
0     0        a        NaN   left_only
1     1        b        2.0        both
2     2      NaN        2.0  right_only
3     2      NaN        2.0  right_only==========merged by index==========
left:A   B
K0  A0  B0
K1  A1  B1
K2  A2  B2right:C   D
K0  C0  D0
K2  C2  D2
K3  C3  D3res:A    B    C    D
K0   A0   B0   C0   D0
K1   A1   B1  NaN  NaN
K2   A2   B2   C2   D2
K3  NaN  NaN   C3   D3==========handle overlapping==========
boys:k  age
0  K0    1
1  K1    2
2  K2    3girls:k  age
0  K0    4
1  K0    5
2  K3    6res:k  age_boy  age_girl
0  K0        1         4
1  K0        1         5

9.pandas plot画图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# plot data# Series
data = pd.Series(np.random.randn(1000), index=np.arange(1000))
data = data.cumsum()
data.plot()
plt.show()# DataFrame
data = pd.DataFrame(np.random.randn(1000, 4), index=np.arange(1000),columns=list("ABCD"))
data = data.cumsum()
data.plot()
plt.show()# plot methods:
# 'bar', 'hist', 'box', 'kde', 'area', scatter', 'hexbin', 'pie'
ax = data.plot.scatter(x='A', y='B', color='DarkBlue', label="Class 1")
data.plot.scatter(x='A', y='C', color='LightGreen', label='Class 2', ax=ax)
plt.show()

运行效果如下:

结语

代码仅供自己参考,大家可以查看对应的教程视频自行学习

参考

  • 莫烦Python
  • https://mofanpy.com/tutorials/data-manipulation/pandas/
  • https://github.com/MorvanZhou/tutorials/tree/master/numpy%26pandas
  • pandas教程:series和dataframe
  • pandas tutorial
  • pandas官方文档

【莫烦Python】Pandas教程相关推荐

  1. 莫烦Python[基础教程]

    python基础教程一 安装 定义功能 函数参数 函数默认参数 可变参数 关键字参数 变量形式 模块安装 文件读取 文件读取1 文件读取2 文件读取3 Class类 input输入 元组.列表.字典 ...

  2. 莫烦python系列教程_莫烦python教程学习笔记——总结篇

    一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...

  3. CNN识别手写数字-莫烦python

    搭建一个 CNN识别手写数字 前面跟着莫烦python/tensorflow教程完成了神经网络识别手写数字的代码,这一part是cnn识别手写数字的 import tensorflow as tf f ...

  4. 【莫烦Python】Numpy教程

    目录 前言 1.numpy属性 2.numpy的array创建 3.numpy的基础运算 4.numpy的基础运算2 5.numpy的索引 6.numpy的array合并 7.numpy的array分 ...

  5. 莫烦python教程下载_Python 有哪些好的学习资料或者博客?

    Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...

  6. 【莫烦Python】Python 基础教程——学习笔记

    文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...

  7. 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记

    [莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...

  8. 【莫烦Python】Matplotlib Python画图教程

    目录 前言 1.基本使用 1.1 基本用法 1.2 figure图像 1.3 设置坐标轴1 1.4 设置坐标轴2 1.5 Legend图例 1.6 Annotation标注 1.7 tick能见度 2 ...

  9. 莫烦python教程部分代码

    GitHub资源整理 莫烦python教程部分代码 莫烦python教程部分代码 整理了一部分莫烦Python教程中的代码,并对代码进行了详细的注释.由于莫烦大佬在做TensorFlow教程时使用的0 ...

最新文章

  1. 实现数组字符串翻转的两种方法
  2. docker本地私有仓库搭建
  3. Microsoft Azure_Fabric
  4. 一个操作系统组成部分
  5. sh ndk-build.cmd command not found
  6. 复制表数据和结构的方法
  7. 分分钟收入上万 她做到了网红最难的粉丝沉淀
  8. mysql群删除记录查询_mysql那些招:执行大批量删除、查询和索引等操作
  9. Java中截取文件名不要后缀
  10. vba 当前文件名_值得学习和珍藏的VBA常用编程代码语句
  11. WordPress微信小程序社区论坛源码
  12. 关于我对于写博客写文章的理解
  13. php调用at命令,执行AT命令在php中发送短信
  14. ehcache springboot_阿里内部进阶学习SpringBoot+Vue全栈开发实战文档
  15. consul 数据持久化_一起学习Nacos的数据持久化
  16. Killing Parallel Query Session
  17. mysql5.7 主从数据库操作命令
  18. FlightGear编译
  19. 超市库存java管理系统_Java案例:超市库存管理系统
  20. 【阿里云】云解析DNS

热门文章

  1. 一个LED圣诞装饰灯网站首页及产品分类页代码
  2. SmartisanT2发布会PPT模板
  3. 黑苹果活动监视器闪退的解决办法
  4. 论文笔记—假名—Pseudonym Changing at Social Spots: An Effective Strategy for Location Privacy in VANETs
  5. Wav 音频波形显示
  6. Jenkins连接AWS-EKS
  7. python气象绘图速成_Python气象绘图Day-By-Day
  8. C程序设计基础(一)
  9. VC实现对Excel表格的操作
  10. 用ardupilot 做无人船项目的总结