当前位置: 首页 > news >正文

洪宇建设集团公司网站北京建设网站公司

洪宇建设集团公司网站,北京建设网站公司,网站建设费用要摊销嘛,建设网站怎么添加端口映射文章目录 Pandas的数据结构Series --- 由数据和索引组成#xff08;索引#xff08;index#xff09;在左#xff0c;数据#xff08;values#xff09;在右#xff09;DataFrame --- 索引包括行索引和列索引#xff0c;每列数据可以是不同的类型 Pandas的索引操作 ---… 文章目录 Pandas的数据结构Series --- 由数据和索引组成索引index在左数据values在右DataFrame --- 索引包括行索引和列索引每列数据可以是不同的类型 Pandas的索引操作 --- 索引对象indexSeriesDataFrame Pandas的对齐运算SeriesDataFrame Pandas的函数应用层级索引Pandas的统计和计算Pandas分组与聚合分组聚合 时间序列分组和连接数据合并 Pandas的数据结构 Series — 由数据和索引组成索引index在左数据values在右 import pandas as pd# 生成一个series ser_obj pd.Series(range(10, 20)) print(ser_obj) print(-- * 20)# 获取数据 print(ser_obj.values)print(-- * 20)# 获取索引 print(ser_obj.index)print(-- * 20)# 下面对ser_obj的计算都不改变ser_obj的实际值# 所有的值 * 2 注索引不变 print(ser_obj * 2) print(-- * 20)# 值满足条件的为True 不满足为False 注索引不变 print(ser_obj 15) print(-- * 20)# 通过索引下标访问值 索引下标不存在报错 print(ser_obj[1]) # 11 上面的运算 并没有 改变ser_obj的值 # ser_obj[10] # KeyError: 10 print(---------------- 通过字典变series --------------------)# 字典变为series year_data {2001: 1, 2013: 13, 2016: 16, 2019: 19, 2023: 23} ser_obj2 pd.Series(year_data) print(ser_obj2) print(-- * 20) print(ser_obj2.index) print(-- * 20) print(ser_obj2.values) print(-- * 20) print(type(ser_obj2.values)) # class numpy.ndarray print(type(ser_obj2.index)) # class pandas.core.indexes.base.Index print(-- * 20) print(ser_obj2[2023]) # 23print(*** * 14)# index.name 索引列的名字 name 整个Series的名字 # head 所有的名字 值 类型 print(ser_obj2.name) ser_obj2.name temp print(ser_obj2.index.name) ser_obj2.index.name year1 print(-- * 20) print(ser_obj2.head()) # print(ser_obj2.head(n)) # 打印前n行的信息但是索引列的名字和 series的名字都会显示 还有dtypeDataFrame — 索引包括行索引和列索引每列数据可以是不同的类型 import pandas as pd import numpy as np# 通过 ndarray 构建 DataFrame arr np.arange(18).reshape((3, 6)) print(pd.DataFrame(arr)) print(--- * 20)# 通过 dict 构建 DataFrame d [{name: xiaohong, age: 23, tel: 10086},{name: xiaogang, tel: 10087},{name: xiaowang, age: 22, tel: 10088}] df pd.DataFrame(d) print(df) print(--- * 20)# 列 要不相等 要不为1 dict_data {A: 1,B: pd.Timestamp(20190926),C: pd.Series(1.5, indexlist(range(4))),D: np.array([3] * 4, dtypeint32),E: [python, c, c, java],F: wangdao} df_obj pd.DataFrame(dict_data) print(df_obj) print(-- * 20) print(df_obj.columns) # Index([A, B, C, D, E, F], dtypeobject) print(-- * 20)# 感受日期 date_range # random.randn(x,y) 生成 x行 y列 随机数 dates pd.date_range(20130101, periods6) df1 pd.DataFrame(np.random.randn(6, 4), indexdates, columnslist(ABCD)) print(df1) print(-- * 20)# 把df的某一列取出来是Series 且 名字是 series的名字 print(df_obj[B]) print(type(df_obj[B])) print(-- * 20)# 增加列数据 列名 自定义 df_obj[G] df_obj[D] 4 print(df_obj)# 删除列 del (df_obj[G]) print(-- * 20) print(df_obj)Pandas的索引操作 — 索引对象index Series import pandas as pd# Series 索引# Series(值索引) # ser_obj pd.Series(range(5), index[a, b, c, d, e]) # 和下面这句功能一样 ser_obj pd.Series(range(5), indexlist(abcde)) print(ser_obj)# 行索引 可以用索引名 也可以用0123默认都有 即使取了别名 print(按索引名索引为) print(ser_obj[a]) print(按0123索引为) print(ser_obj[1]) print(-- * 20)# 切片索引 print(ser_obj[1:3]) # 按0123索引 左闭右开 print(ser_obj[a:c]) # 按索引名 左右都闭---因为你不知道c前面是谁 所以不知道到哪停止 print(-- * 20)# 不连续索引 [[]] print(ser_obj[[0, 2, 4]]) print(ser_obj[[a, e]]) print(-- * 20)# 布尔索引 ser_bool ser_obj 2 print(ser_bool) # 下面两个结果一样 print(ser_obj[ser_bool]) # print(ser_obj[ser_obj 2])DataFrame import numpy as np import pandas as pd# DataFrame索引 index行 columns列 df_obj pd.DataFrame(np.random.randn(5, 4),index[a, b, c, d, e],columns[a, b, c, d]) print(df_obj) print(-- * 20)# 列索引 print(df_obj[a]) # []返回Series类型 print(-- * 20) print(df_obj[[a]]) # [[]]返回DataFrame类型 print(-- * 20)# 标签索引 loc 索引---名 [] 左右都是闭区间 名只能用名字 不能用0123 # Series print(df_obj.loc[a]) # 推荐 取---行 # print(df_obj[a]) # 建议不用 取---列 print(-- * 20) # 第一个参数是行第二个参数是列 print(df_obj.loc[a:c, b]) print(-- * 20)# iloc ---(位置) 索引 是 前闭后开 [) 位置只能用 数字0123 print(df_obj.iloc[0:2, 1:2]) print(type(df_obj.iloc[0:2, 1:2]))Pandas的对齐运算 Series import pandas as pd# 对齐运算 缺失数据 默认是nan 注只有float类型才有nan和inf # Series s1 pd.Series(range(10, 20), indexrange(10)) s2 pd.Series(range(25, 30), indexrange(5)) s3 s1 s2 print(s3) # 缺失数据 默认是nan print(-- * 20) # 未对齐的数据nan 和 填充值fill_value ---做 ---运算 # 注不是---计算完 ---以后 在把nan填充成fill_value print(s1.add(s2, fill_value0))DataFrame import pandas as pd# np.ones(x,y) 用 1. 填充x行y列 df1 pd.DataFrame(np.ones((2, 2)), columnslist(ab)) df2 pd.DataFrame(np.ones((3, 3)), columns[a, b, c]) print(df1 - df2) print(-- * 20) print(df1.sub(df2, fill_value2.)) # nan 的位置用 2. 来计算 (写成2也行)Pandas的函数应用 import pandas as pd import numpy as np# 函数应用 Series df pd.DataFrame(np.random.randn(5, 4) - 1) print(df) print(绝对值如下np.abs():) print(np.abs(df)) # 绝对值 print(-- * 20)# apply 作用在 列上 axis 默认为0 print(df.apply(lambda x: x.max())) print(-- * 20)# apply 作用在 行上 print(df.apply(lambda x: x.max(), axis1)) print(-- * 20)# applymap 作用到 每个数据 print(df.applymap(lambda x: %.2f % x)) # 保留两位小数 # print(df.dtypes) print(-- * 20)s pd.Series(range(10, 15), indexnp.random.randint(5, size5)) # 必须加size5 print(s) print(-- * 20)# 索引排序(sort_index) print(s.sort_index()) print(-- * 20)# DataFrame df pd.DataFrame(np.random.randn(5, 5),indexnp.random.randint(5, size5),columnsnp.random.randint(5, size5)) print(df) print(-- * 20) # 轴0是行索引排序 # sort_index 默认是升序排序 ascendingFalse 为降序排序 df_rSort df.sort_index(axis0, ascendingFalse) print(df_rSort) print(-- * 20) # 轴1是列索引排序 df_cSort df.sort_index(axis1, ascendingFalse) print(df_cSort) print(-- * 20)# 按值排序(sort_values) by后是column的值 import randoml [random.randint(0, 100) for i in range(24)] df2 pd.DataFrame(np.array(l).reshape(6, 4)) print(df2) print(-- * 20) # 按轴0排序 by后是列名 ---结果以 行的形式展示 df2_cSort df2.sort_values(by3, axis0, ascendingFalse) print(df2_cSort) print(-- * 20) # 按轴1排序 by后是行名 ---结果以 列的形式展示 df2_rSort df2.sort_values(by3, axis1, ascendingFalse) print(df2_rSort)# 处理缺失数据 df pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]]) print(df.head())# df.isnull() nan 为True 其他为 False print(df.isnull()) print(-- * 20)# df.dropna() 默认是删除行 ---加axis1 就是删除列一般不用 print(df.dropna()) print(-- * 20)# fillna 把nan填成某值 print(df.fillna(-100.)) print(-- * 20)层级索引 index1 pd.MultiIndex.from_arrays([[a, a, a, b, b, b, c, c, c], [0, 1, 2, 0, 1, 2, 0, 1, 2]],names[cloth, size]) ser_obj pd.Series(np.random.randn(9), indexindex1)print(ser_obj) print(-- * 20) print(ser_obj.index) # [[a, b, c], [0, 1, 2]] print(ser_obj.index.levels) print(-- * 20)# 层级索引如何获取数据 print(ser_obj[c]) # 外层索引 print(-- * 20) print(ser_obj[c, 1]) # 内层索引 print(-- * 20) print(ser_obj[:, 2]) print(-- * 20)# 交换层级 swaplevel() print(ser_obj.swaplevel()) print(-- * 20) print(ser_obj) print(-- * 20) # 层级索引按那个索引级别排序 print(ser_obj.sort_index(level1))# unstack 可以放索引名 或者索引位置 print(-- * 20) df_obj ser_obj.unstack(1) # 把1层索引 放到上面 变成dataframe print(df_obj) print(-- * 20)# stack 把行、列索引进行堆叠 变成Series print(df_obj.stack())Pandas的统计和计算 import numpy as np import pandas as pd# pandas统计和计算 # axis 1 统计每一行 axis 0 统计每一列 df_obj pd.DataFrame(np.random.randn(5, 4), columnslist(abcd)) print(df_obj) df_obj.loc[1, b] np.nan print(df_obj) print(-- * 20) # skipna 是否跳过nan 默认是True axis1 表示每一行的最小值 axis0表示每一列的最小值 print(df_obj.min(axis1, skipnaFalse)) print(-- * 20) # describe() 最大值 最小值 数值的个数 方差 等等都有 print(df_obj.describe()) print(-- * 20)# 计算最大值或者最小值的 位置 # argmin 和 argmax 只能是Series 不能是 DataFrame print(type(df_obj.loc[:, c])) # Series print(df_obj.loc[:, c].argmin()) print(-- * 20)# 计算最大值或者最小值的 索引 idxmax idxmin print(df_obj.idxmax(axis0)) # axis0 表示每一 列Pandas分组与聚合 分组 import numpy as np import pandas as pd# 分组 都是按 轴1分组 因为每一列代表一种类型 # 字典默认作为列名 dict_obj {key1: [a, b, a, b, a, b, a, a],key2: [one, one, two, three, two, two, one, three],data1: np.random.randn(8),data2: np.random.randn(8)} df_obj pd.DataFrame(dict_obj) print(df_obj) print(-- * 20)# dataframe根据key1进行分组分组后的对象类型 print(df_obj.groupby(key1)) print(type(df_obj.groupby(key1))) print(-- * 20) print(df_obj[data1]) # dataframe 的 data1 列 根据key1 进行分组 print(type(df_obj[data1].groupby(df_obj[key1]))) print(-- * 20)# 分组运算 grouped2 df_obj[data1].groupby(df_obj[key1]) print(grouped2.mean()) print(-- * 20)# 按自定义的key分组 self_def_key [0, 1, 2, 3, 3, 4, 4, 7] print(df_obj.groupby(self_def_key).size()) # 等于mysql的count print(df_obj.groupby(self_def_key).sum()) print(-- * 20)# 按自定义key分组多层列表 print(df_obj.groupby([df_obj[key1], df_obj[key2]]).size()) print(-- * 20)# 按多个列 多层分组 grouped3 df_obj.groupby([key1, key2]) print(grouped3.size()) print(-- * 20)# 多层分组 按key的顺序进行 grouped4 df_obj.groupby([key2, key1]) print(grouped4.size()) print(grouped4.mean()) print(-- * 20)# unstack 可以将多层索引的结果换成单层的dataframe print(grouped4.mean().index) print(type(grouped4.mean().unstack())) print(grouped4.mean().unstack()) print(grouped4.mean().unstack().columns) print(-- * 20)# 多层分组根据key1 和 key2 for group_name, group_data in grouped4:print(group_name)print(group_data)print(type(group_data)) print(-- * 20)# 按类型分组 print(df_obj.dtypes) # 一列数据类型必须一致对应现实生活的一个特征 df_obj[data3] df_obj[data2] 1 print(df_obj) print(-- * 20) print(df_obj.groupby(df_obj.dtypes, axis1).size()) # 按轴0没有意义 print(df_obj.groupby(df_obj.dtypes, axis1).sum()) self_column_key [1, 2, 3, 3, 4] print(df_obj.groupby(self_column_key, axis1).sum()) # 通过自定义索引去让不同列相加 print(-- * 20)# 通过字典分组 randint(1, 10, (5, 5)) 1-10之间 5行5列 df_obj2 pd.DataFrame(np.random.randint(1, 10, (5, 5)), columnslist(abcde), indexlist(ABCDE)) print(df_obj2) # 给指定某个部分的数据重新赋值为np.NaN df_obj2.loc[B, b:d] np.nan print(df_obj2) print(** * 20)# 通过字典分组 mapping_dict {a: python, b: python, c: java, d: c, e: java}print(df_obj2.groupby(mapping_dict, axis1).size()) # 值 对应的个数 c -- 1 java -- 2 python -- 2 print(df_obj2.groupby(mapping_dict, axis1).count()) # 非nan的个数 print(df_obj2.groupby(mapping_dict, axis1).sum()) # 求和不记录nan nan当作0了 print(-- * 20)# 通过函数分组 df_obj3 pd.DataFrame(np.random.randint(1, 10, (5, 5)), columnslist(abcde),index[AA, BBBB, CCC, D, EEE]) print(df_obj3)def group_key(idx):return len(idx) # 默认传的是行索引 因为列索引都是1print(df_obj3.groupby(group_key).size()) # axis 默认是0 # 上面自定义函数等价于 print(df_obj3.groupby(len).size()) print(-- * 20)# 通过索引级别分组 columns pd.MultiIndex.from_arrays([[python, java, python, java, c], [A, A, C, B, B]],names[language, index1]) df_obj4 pd.DataFrame(np.random.randint(1, 10, (5, 5)), columnscolumns) print(df_obj4) print(-- * 20)# 根据language进行分组 print(df_obj4.groupby(levellanguage, axis1).sum()) print(-- * 20)# 根据index进行分组 print(df_obj4.groupby(levelindex1, axis1).sum())聚合 import numpy as np import pandas as pd# 聚合 # 字典默认作为列名 dict_obj {key1: [a, b, a, b, a, b, a, a],key2: [one, one, two, three, two, two, one, three],data1: np.random.randn(8),data2: np.random.randn(8)} df_obj pd.DataFrame(dict_obj) print(df_obj)# 自定义聚合函数 def peak_range(df):df 参数是 groupby后的groupby对象:param df::return:return df.max() - df.min()df_obj2 df_obj.loc[:, [key1, data1, data2]] print(df_obj2.groupby(key1).agg(peak_range)) print(df_obj2.groupby(key1).agg(lambda df: df.max() - df.min())) print(-- * 20)# 同时应用多个聚合函数 print(df_obj2.groupby(key1).agg([mean, std, count, peak_range])) print(-- * 20)# 每列作用不同的聚合函数 dict_mapping {data1: mean,data2: count } print(df_obj2.groupby(key1).agg(dict_mapping))时间序列 import numpy as np import pandas as pd# 设置索引 # 索引中单项不可以改变但是整体可以换掉 a pd.DataFrame({a: range(7), b: range(7, 0, -1),c: [one, one, two, one, two, two, two],d: list(hjklmno)}) print(a) c a.copy() a.index list(abcdefg) print(c的索引没变) print(c) print(a) # a的索引变了 print(-- * 20) b c.reindex(list(abcdefg)) # 返回一个新的dfb没有值c的索引不变 print(b) print(-- * 20)# 让某些列变为索引 print(a) print(a.set_index([c, d])) # a没变返回修改后的df print(a没变) print(a) print(-- * 20)# 时间序列 date_range 注意是 date e pd.date_range(start20190101, end20190924)# periods 长度 B 工作日 M 每月最后一天 W 每周周日 pd.date_range(start20190101, periods10, freqB) pd.date_range(start20190819, periods8, freqM) pd.date_range(start20230819, periods8, freqW)分组和连接 import numpy as np import pandas as pd# 分组和连接 dict_obj {key1: [a, b, a, b, a, b, a, a],data1: np.random.randn(8),data2: np.random.randn(8)} df_obj pd.DataFrame(dict_obj) print(df_obj) print(-- * 20) # add_prefix 增加前缀 key1_sum df_obj.groupby(key1).sum().add_prefix(sum_) print(key1_sum) print(-- * 20)# 两个df之间进行连接 # 和mysql的join是一致的 on 连接条件 # 左边以key1为关键词进行连接右边选True key1_sum_merge pd.merge(df_obj, key1_sum, left_onkey1, right_indexTrue) print(key1_sum_merge) print(-- * 20)# 方法二 使用transform 把分组后的结果放到原处 key1_sum_tf df_obj.groupby(key1).transform(np.sum).add_prefix(sum_) print(key1_sum_tf) print(-- * 20)# 算自己比平均值高多少 或者少多少 def diff_mean(s):return s - s.mean()print(df_obj.groupby(key1).transform(diff_mean))# 星际争霸 dataset_path starcraft.csv df_data pd.read_csv(dataset_path, usecols[LeagueIndex, Age, HoursPerWeek, TotalHours, APM]) print(df_data) print(-- * 20)def top_n(df, n3, columnAPM):返回每个分组按 column 的 top n 数据return df.sort_values(bycolumn, ascendingFalse)[:n]# apply 可以用自定义函数 print(df_data.groupby(LeagueIndex).apply(top_n)) # group_keys 为 False后groupby的列不会变为索引 print(df_data.groupby(LeagueIndex, group_keysFalse).apply(top_n)) # 可以自己传参 print(df_data.groupby(LeagueIndex).apply(top_n, n4, columnAge)) print(--- * 20)# 连接两个dataframe df_obj1 pd.DataFrame({key: list(bbacaab),data1: np.random.randint(0, 10, 7)}) df_obj2 pd.DataFrame({key: list(abd),data2: np.random.randint(0, 10, 3)}) print(df_obj1) print(df_obj2) print(-- * 20)# 1 默认使用相同的列命进行连接连接方式是内连接 print(pd.merge(df_obj1, df_obj2))# 2 左表索引和右表索引进行连接 _index 索引连接 print(pd.merge(df_obj1, df_obj2, left_indexTrue, right_indexTrue))# 3 使用相同的列命进行连接,连接方式是内连接 和 1 一样 pd.merge(df_obj1, df_obj2, onkey) print(-- * 20)# 4 左右只能出现一次但是连接方式可以任意 df_obj1 df_obj1.rename(columns{key: key1}) df_obj2 df_obj2.rename(columns{key: key2})print(pd.merge(df_obj1, df_obj2, left_onkey1, right_onkey2)) print(-- * 20)# 全外连接 print(pd.merge(df_obj1, df_obj2, left_onkey1, right_onkey2, howouter)) print(-- * 20)# left join 等价于 left outer join 左表为主 print(pd.merge(df_obj1, df_obj2, left_onkey1, right_onkey2, howleft)) print(-- * 20)# right 等价于 right outer join 右表为主 print(pd.merge(df_obj1, df_obj2, left_onkey1, right_onkey2, howright)) print(-- * 20)# 处理重复列命 df_obj3 pd.DataFrame({key: list(bbacaab),data: np.random.randint(0, 10, 7)}) df_obj4 pd.DataFrame({key: list(abd),data: np.random.randint(0, 10, 3)}) # 给相同的数据列添加后缀 on列 print(pd.merge(df_obj3, df_obj4, onkey, suffixes(_left, _right)))数据合并 import numpy as np import pandas as pd# 数据合并 # numpy 里面的合并 arr1 np.random.randint(0, 10, (3, 4)) arr2 np.random.randint(0, 10, (3, 4)) print(arr1) print(arr2) print(-- * 20)# 默认按轴0合并 print(np.concatenate([arr1, arr2])) print(np.concatenate([arr1, arr2], axis1)) print(-- * 20)# pandas 合并 # index 没有重复的情况 ser_obj1 pd.Series(np.random.randint(0, 10, 5), indexrange(0, 5)) ser_obj2 pd.Series(np.random.randint(0, 10, 5), indexrange(5, 10)) ser_obj3 pd.Series(np.random.randint(0, 10, 5), indexrange(10, 15)) print(ser_obj1) print(ser_obj2) print(ser_obj3) print(-- * 20)print(pd.concat([ser_obj1, ser_obj2, ser_obj3])) print(pd.concat([ser_obj1, ser_obj2, ser_obj3], axis1)) print(--- * 20)# index 有重复的情况 ser_obj1 pd.Series(np.random.randint(0, 10, 5), indexrange(0, 5)) ser_obj2 pd.Series(np.random.randint(0, 10, 5), indexrange(3, 8)) ser_obj3 pd.Series(np.random.randint(0, 10, 5), indexrange(6, 11)) print(-- * 20)print(pd.concat([ser_obj1, ser_obj2, ser_obj3])) print(-- * 20) print(pd.concat([ser_obj1, ser_obj2, ser_obj3], axis1, joininner)) # 内连接 没有nan print(pd.concat([ser_obj1, ser_obj2, ser_obj3], axis1, joinouter)) # 全外连接 有 nan print(pd.concat([ser_obj1, ser_obj2, ser_obj3], axis1)) # 默认外连接 有nan print(-- * 20)# 数据重构 df_obj pd.DataFrame(np.random.randint(0, 10, (5, 2)), columns[data1, data2]) print(df_obj)# 对df进行stack,就会变成mutiindex的series stacked df_obj.stack() # stack 内部带的参数是 level 选择哪一个 column 变为 index print(stacked) print(stacked.unstack()) # 又回去了 print(-- * 20) print(stacked.unstack(level0)) print(-- * 20)# 处理重复数据 df_obj pd.DataFrame({data1: [a] * 4 [b] * 4, data2: np.random.randint(0, 4, 8)}) print(df_obj) print(df_obj.duplicated()) # 把从上到下重复的变为True df_obj[~df_obj.duplicated()] # 取出不重复行# 按某列去重 print(df_obj.duplicated(data2)) print(-- * 20)df_obj1 pd.DataFrame({data1: [np.nan] * 4,data2: list(1234)}) print(df_obj1) print(df_obj1.duplicated(data1)) # 空值认为相等 实际上 np.nan ! np.nan 为True print(df_obj1.drop_duplicates(data1)) # 去除重复行 print(-- * 20)# series 替换值 ser_obj pd.Series(np.arange(10)) print(ser_obj) # 单个值替换成单个值 print(ser_obj.replace(1, -100))# 多个值替换成单个值 print(ser_obj.replace(range(6, 9), -100))# 多个值替换成多个值 print(ser_obj.replace([4, 6], [-100, -200])) print(-- * 20)# dataframe 替换值 df pd.DataFrame({A: [0, 1, 2, 3],B: [4, 5, 6, 7],C: list(abcd)}) print(df) # regexTrue 正则表达式 前面用了正则 就需要变为True print(df.replace(to_replacer^a, value100, regexTrue)) print(df.dtypes) # C列变为object类了
http://www.pierceye.com/news/960837/

相关文章:

  • 有关网站开发的文章做微商网站的软文
  • 做网站公司起什么名字西安官网seo技术
  • zepto网站开发用帝国cms做的网站首页
  • 手机影视网站制作一站式服务大厅官网
  • 创意网站展示汕尾百度seo公司
  • 网站被spider重复抓取自主建站网站平台
  • 网站打开小企业网站建设哪里做得好
  • 网站开发+进度表什么牛网站建设
  • 不同类型网站比较及网站域名设计整站优化
  • 高端企业网站建设规定陕西关键词优化推荐
  • 做图表的网站推荐简单的个人网站模板
  • 淄博瓷砖网站建设中企动力永久免费虚拟主机
  • 厦门网站建设创建有哪些python wordpress采集
  • 如何建立网站链接百度账号设置
  • 网站的申请淄博市住房和城乡建设厅网站
  • 重庆网站设计开发杂志网站模板
  • 网站建设需要营业执照吗建站之星源码下载
  • 网站建设需要基础吗做游戏的软件app
  • 网站建设费用分几年摊销网站建设动态
  • 企业网站的网址通常包含网站建设总结会上 领导讲话稿
  • 营销型网站五大系统 单仁网站开发个人简历
  • 网站内容的编辑和更新怎么做的免费的网站制作
  • 做网站 0元代理下载站源码cms
  • 台州市建设局招聘网站wordpress更新计划
  • 有教做路桥质检资料的网站吗企业画册印刷
  • 四川省营山县西城建筑公司网站租服务器 wordpress
  • 绿色蔬菜网站模板昆明软件开发公司排名
  • 东台做淘宝网站爱站seo工具包免费版
  • 做网站运营的简历学做家庭树网站
  • 专业做企业网站网页制作与网站建设 在线作业