3 min read

技术:进阶技巧与优化

技术 系列导航

1 技术:Poisson分布、回归Python实现 2017-12-20
2 技术:beta系数理解 2017-12-21
3 技术:Python List剔除重复值 2017-12-21
4 技术:t-SNE处理高维数据可视化 2017-12-21
5 技术:用R语言进行文件系统管理 2017-12-21
6 技术:fct_lump分箱使用方法 2017-12-22
7 技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 技术:Fisher的一个矩阵预算 2017-12-27
9 技术:case_when使用方法 2017-12-28
10 技术:Python接口函数 2017-12-28
11 技术:fct_relevel调整对照组,批量的方案 2017-12-30
12 技术:python中变量批量处理集成方案 2017-12-30
13 技术:Python接口函数-中台 2018-01-03
14 技术:使用pbd包进行debug 2018-01-03
15 技术:R实现随机分组 2018-01-04
16 技术:jiebaR包做文本清洗 2018-01-05
17 技术:r_WACC使用说明 2018-01-05
18 技术:使用switchhost安装host 2018-01-05
19 技术:Git的下载问题 2018-01-06
20 技术:新闻爬虫 2018-01-07
21 技术:Scalable Data Processing in R 2018-01-08
22 技术:使用git创建一个自己的本地仓库 2018-01-11
23 技术:dashboard构建,来自yihui的包 2018-01-12
24 技术:最大似然估计再理解 2018-01-12
25 技术:itchat包提取微信好友公开数据 2018-01-13
26 技术:do函数和biglm包 2018-01-17
27 技术:Imputer后X少了一列 2018-01-18
28 技术:mac连接mysql,理论上win7也可以 2018-01-19
29 技术:ggpubr提高作图效率 2018-01-20
30 技术:t-SNE理论部分补充 2018-01-22
31 技术:RMarkdown的使用技巧 2018-01-30
32 技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
33 技术:ggridges 山峦图 学习笔记 2018-02-02
34 技术:Tidyverse使用技巧 2018-02-02
35 技术:XGBoost 学习笔记 2018-02-02
36 技术:分布变离散,或者纠正skew 2018-02-02
37 技术:rsq在R中自定义函数 2018-02-03
38 技术:Jupyter实战 2018-02-13
39 技术:美化与定制 2018-02-21
40 技术:数据对比可视化指南 2018-02-22
41 技术:功能体验 2018-02-26
42 技术:高效数据处理 2018-02-27
43 技术:模型优化技巧 2018-03-05
44 技术:原理与应用 2018-03-06
45 技术:模型与可视化 2018-03-08
46 技术:美化与交互指南 2018-03-11
47 技术:高效操作指南 2018-03-14
48 技术:用法与优化技巧 2018-03-17
49 技术:效率提升指南 2018-03-18
50 技术:问题排查技巧 2018-03-18
51 技术:高效操作指南 2018-03-19
52 技术:方法与代码示例 2018-03-21
53 技术:实战示例 2018-03-22
54 技术:效率与规范指南 2018-03-24
55 技术:dplython包测评 2018-03-25
56 技术:原理与实现 2018-04-02
57 技术:原理与应用解析 2018-04-03
58 技术:实战指南 2018-04-05
59 技术:核心语法与函数整理 2018-04-05
60 技术:复利计算与应用 2018-04-08
61 技术:简单规则模型解析 2018-04-14
62 技术:高效代码设计指南 2018-04-25
63 技术:原理与应用学习笔记 2018-04-29
64 技术:实战指南 2018-04-29
65 技术:原理与应用 2018-05-01
66 技术:表格格式化指南 2018-05-02
67 技术:原理与应用介绍 2018-05-08
68 技术:高效文本拼接 2018-05-11
69 技术:方法与实践学习笔记 2018-05-12
70 技术:方法与工具 2018-05-12
71 技术:功能解析 2018-05-17
72 技术:高效数据输入 2018-05-21
73 技术:基础模型与方法 2018-05-22
74 技术:功能与使用体验 2018-05-26
75 技术:特征筛选学习笔记 2018-05-29
76 技术:实战技巧 2018-05-30
77 技术:建模思路解析 2018-06-03
78 技术:策略与实战 2018-06-03
79 技术:数据展示指南 2018-06-04
80 技术:包与环境配置指南 2018-07-14
81 技术:高效操作指南 2018-07-19
82 技术:方法与案例解析 2018-07-24
83 技术:统计建模学习笔记 2018-07-24
84 技术:展示技巧与原则 2018-08-10
85 技术:数据采集实战技巧 2018-08-21
86 技术:指标设计学习笔记 2018-09-20
87 技术:建模流程实战 2018-10-01
88 技术:大规模数据探索 2018-10-20
89 技术:文本提取与分析 2018-10-20
90 技术:原理与R实现实战 2018-10-21
91 技术:学习资源获取技巧 2018-10-23
92 技术:深度学习模型实战 2018-10-24
93 技术:实战指南 2018-10-30
94 技术:分析与展示指南 2018-11-03
95 技术:图片编辑与转换 2018-11-03
96 技术:安装与使用基础学习笔记 2018-11-07
97 技术:非结构化数据处理 2018-11-29
98 技术:表格美化技巧 2018-12-13
99 技术:分类数据可视化 2018-12-24
100 技术:流程图绘制技巧 2018-12-24
101 技术:自动化设置 2018-12-28
102 技术:协作与版本控制 2018-12-29
103 技术:pipeline设计 2018-12-30
104 技术:Git历史记录清理 2018-12-31
105 技术:AUC指标对比 2019-01-01
106 技术:时间序列可视化 2019-01-01
107 技术:变量命名工具指南 2019-01-02
108 技术:网页自动化截图 2019-01-02
109 技术:配置与优化 2019-01-03
110 技术:原理与应用 2019-01-07
111 技术:语法与核心概念 2019-01-14
112 技术:R包徽章设计 2019-01-15
113 技术:项目结构设计 2019-01-21
114 技术:文本分类基础任务 2019-01-22
115 技术:线性与非线性模型 2019-01-22
116 技术:有效性验证 2019-01-27
117 技术:评估与应用 2019-01-29
118 技术:循环神经网络入门 2019-01-30
119 技术:长短期记忆网络入门 2019-01-30
120 技术:for循环示例 2019-02-03
121 技术:基础到进阶 2019-02-06
122 技术:查询与整合 2019-02-06
123 技术:方法与案例 2019-02-14
124 技术:R包高效开发指南 2019-02-20
125 技术:解析与操作 2019-02-20
126 技术:训练与预测 2019-02-25
127 技术:原理与代码 2019-02-26
128 技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 技术:方法与工具 2019-03-07
130 技术:文本特征提取示例 2019-03-08
131 技术:基础任务示例 2019-03-18
132 技术:条形图与表头设计 2019-03-20
133 技术:连续与分类变量差异 2019-03-30
134 技术:思路与方法 2019-04-08
135 技术:方法与工具 2019-04-15
136 技术:多格式读取 2019-04-16
137 技术:方法与工具 2019-05-11
138 技术:Git/GitHub/GitLab 2019-05-13
139 技术:命令与操作 2019-05-19
140 技术:协作与版本控制 2019-05-26
141 技术:语法与实践 2019-06-28
142 技术:功能与API 2019-07-13
143 技术:安装与使用 2019-07-24
144 读《未来简史》:技术与未来 2019-09-14
145 技术:高效数据处理 2019-10-09
146 技术:性能优化技巧 2019-10-12
147 技术:配置与运维 2019-10-29
148 技术:原理与经典模型 2019-12-25
149 技术:构建到发布流程 2019-12-26
150 技术:方法与案例 2019-12-27
151 技术:命令与自动化 2019-12-30
152 技术:Pandas数据处理实战指南 2020-01-19
153 技术:特征工程之目标编码学习笔记 2020-01-20
154 技术:文档编写与美化 2020-01-28
155 技术:核心算法与应用 2020-01-29
156 技术:流程图绘制技巧 2020-01-29
157 技术:DataCamp课程笔记 2020-01-31
158 技术:Python实用代码片段合集 2020-01-31
159 技术:自动化构建流程 2020-02-02
160 技术:自动化工作流配置 2020-02-04
161 技术:高效查找代码与项目 2020-02-11
162 技术:代码环境快速部署 2020-02-24
163 技术:USD数据分析论文收录暨GitBook发布 2020-05-02
164 游记:西安博物院(5)西汉器物工艺到新莽技术应用 2020-10-01
165 技术:Causal Forest 2021-03-18
166 技术小团队人才培养思考:压力・复盘・沉淀 2024-05-21
167 BJ Fogg模型:从说服技术理论到行为设计实践 2024-11-24
168 管理视角:技术团队的核心交付是什么 2025-02-13
169 研读毛选:核心技术三大特征 2025-03-28

本文于2026-03-28更新。 如发现问题或者有建议,欢迎提交 Issue

这一次接口函数的学习,更加精进。 随便整理了一波废文件。

import json
import pandas as pd
import requests

json.dumps

json.dumps的解释有一个博客写的很好,例子非常浅显易懂,这里借鉴思考。 先抛出答案,格式不同,一个是dict,一个是strdump不讲了,实际用得少,很废。

a = {"name": "jia", "age": 24}
print a,type(a)
b = json.dumps(a)
print b,type(b)
{'age': 24, 'name': 'jia'} <type 'dict'>
{"age": 24, "name": "jia"} <type 'str'>

因此这个地方的data本身是dict格式的,这样一搞就是str格式了。

data = json.dumps(data)
type(data)
str

json.loads就是反向操作。

print type(b)
c = json.loads(b)
print type(c)
<type 'str'>
<type 'dict'>

requests

下面要搞懂requests函数的意思,这里有一个很有用的入门介绍,主要用github的来测试。

对于get

path_get = "http://httpbin.org/get"
r = requests.get(path_get)
print r,type(r)
<Response [200]> <class 'requests.models.Response'>

显然r什么都看不到。但是如果用浏览器可以看到是

{
  "args": {}, 
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", 
    "Connection": "close", 
    "Host": "httpbin.org", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
  }, 
  "origin": "69.172.67.65", 
  "url": "http://httpbin.org/get"
}

对于get常常需要加入params,这里不需要手动加,直接设置就好。

params = {'key1':'value1','key2':'value2'}
print requests.get(path_get,params=params).url
http://httpbin.org/get?key2=value2&key1=value1

这样就不需要手打问号了。

试试post

r = requests.post("http://httpbin.org/post")
print r,type(r)
<Response [200]> <class 'requests.models.Response'>

要是想查看格式的话,用.text

print r.text,type(r.text),r.content,type(r.content)
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.14.2"
  }, 
  "json": null, 
  "origin": "69.172.67.65", 
  "url": "http://httpbin.org/post"
}
<type 'unicode'> {
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.14.2"
  }, 
  "json": null, 
  "origin": "69.172.67.65", 
  "url": "http://httpbin.org/post"
}
<type 'str'>

所以.content是帮助转化成str格式了。

其他

print r.encoding
None
print r.json(),type(r.json())
{u'files': {}, u'origin': u'69.172.67.65', u'form': {}, u'url': u'http://httpbin.org/post', u'args': {}, u'headers': {u'Content-Length': u'0', u'Accept-Encoding': u'gzip, deflate', u'Host': u'httpbin.org', u'Accept': u'*/*', u'User-Agent': u'python-requests/2.14.2', u'Connection': u'close'}, u'json': None, u'data': u''} <type 'dict'>

这样就是字典格式了。

加入headers.post情况。

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print r.text
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "23", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.14.2"
  }, 
  "json": null, 
  "origin": "69.172.67.65", 
  "url": "http://httpbin.org/post"
}

还是有点不懂,到底是怎么取用的呢?

r.headers
{'Content-Length': '463', 'X-Processed-Time': '0', 'X-Powered-By': 'Flask', 'Server': 'meinheld/0.6.1', 'Connection': 'keep-alive', 'Via': '1.1 vegur', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Wed, 21 Mar 2018 12:27:14 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}

实战

M站表

headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 10
# url = "http://loansd.ppdapi.com/Lightning/QueryService/QueryListingAutoFlowUserProcess"
for item in [24064633,24739192]:
    data = {
        "UserIds": [int(item)]
    }
    data1 = json.dumps(data, ensure_ascii=False)
    response = requests.post(url, data1, headers=headers, timeout=timeout).text
    response= response.encode('utf-8')
type(response)
str

但是我们熟悉的都是dictpd.DataFrame

type(json.loads(response))
response = json.loads(response)
#response[u'Result']

这里保护用户隐私就不显示了。

df = pd.DataFrame().from_dict(response[u'Result'])

这个地方主义response的第一个keys才是一个我们真正需要的dict

那么多没有意义的变量,选择一下好了。我们需要时间,这个时候通过阅读cookbook知道,使用filter函数就好。

#pd.concat([df.filter(like = "UserId"), df.filter(like = "Time")], axis = 1)

这里保护用户隐私就不显示了。

完美.

这种回传出来,是这种乱糟糟格式的是啥情况,不是str,也不是dict

芝麻分

headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 10
# url = "http://3rdreadapi.ppdapi.com/queryData"
data = {



    "options": "zhimaquery",

    "version": "1.0.0",

    "async": "1",

    "atom": 0,

    "role": 0

}
data = json.dumps(data)

这个地方陈建说,data要限制为str格式,不能是dict。 否则,400 请求格式错误。 这是开发文档

response = requests.post(url, data, headers=headers, timeout=timeout).text

type(response)
response

这里保护用户隐私就不显示了。

技术 系列导航

1 技术:Poisson分布、回归Python实现 2017-12-20
2 技术:beta系数理解 2017-12-21
3 技术:Python List剔除重复值 2017-12-21
4 技术:t-SNE处理高维数据可视化 2017-12-21
5 技术:用R语言进行文件系统管理 2017-12-21
6 技术:fct_lump分箱使用方法 2017-12-22
7 技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 技术:Fisher的一个矩阵预算 2017-12-27
9 技术:case_when使用方法 2017-12-28
10 技术:Python接口函数 2017-12-28
11 技术:fct_relevel调整对照组,批量的方案 2017-12-30
12 技术:python中变量批量处理集成方案 2017-12-30
13 技术:Python接口函数-中台 2018-01-03
14 技术:使用pbd包进行debug 2018-01-03
15 技术:R实现随机分组 2018-01-04
16 技术:jiebaR包做文本清洗 2018-01-05
17 技术:r_WACC使用说明 2018-01-05
18 技术:使用switchhost安装host 2018-01-05
19 技术:Git的下载问题 2018-01-06
20 技术:新闻爬虫 2018-01-07
21 技术:Scalable Data Processing in R 2018-01-08
22 技术:使用git创建一个自己的本地仓库 2018-01-11
23 技术:dashboard构建,来自yihui的包 2018-01-12
24 技术:最大似然估计再理解 2018-01-12
25 技术:itchat包提取微信好友公开数据 2018-01-13
26 技术:do函数和biglm包 2018-01-17
27 技术:Imputer后X少了一列 2018-01-18
28 技术:mac连接mysql,理论上win7也可以 2018-01-19
29 技术:ggpubr提高作图效率 2018-01-20
30 技术:t-SNE理论部分补充 2018-01-22
31 技术:RMarkdown的使用技巧 2018-01-30
32 技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
33 技术:ggridges 山峦图 学习笔记 2018-02-02
34 技术:Tidyverse使用技巧 2018-02-02
35 技术:XGBoost 学习笔记 2018-02-02
36 技术:分布变离散,或者纠正skew 2018-02-02
37 技术:rsq在R中自定义函数 2018-02-03
38 技术:Jupyter实战 2018-02-13
39 技术:美化与定制 2018-02-21
40 技术:数据对比可视化指南 2018-02-22
41 技术:功能体验 2018-02-26
42 技术:高效数据处理 2018-02-27
43 技术:模型优化技巧 2018-03-05
44 技术:原理与应用 2018-03-06
45 技术:模型与可视化 2018-03-08
46 技术:美化与交互指南 2018-03-11
47 技术:高效操作指南 2018-03-14
48 技术:用法与优化技巧 2018-03-17
49 技术:效率提升指南 2018-03-18
50 技术:问题排查技巧 2018-03-18
51 技术:高效操作指南 2018-03-19
52 技术:方法与代码示例 2018-03-21
53 技术:实战示例 2018-03-22
54 技术:效率与规范指南 2018-03-24
55 技术:dplython包测评 2018-03-25
56 技术:原理与实现 2018-04-02
57 技术:原理与应用解析 2018-04-03
58 技术:实战指南 2018-04-05
59 技术:核心语法与函数整理 2018-04-05
60 技术:复利计算与应用 2018-04-08
61 技术:简单规则模型解析 2018-04-14
62 技术:高效代码设计指南 2018-04-25
63 技术:原理与应用学习笔记 2018-04-29
64 技术:实战指南 2018-04-29
65 技术:原理与应用 2018-05-01
66 技术:表格格式化指南 2018-05-02
67 技术:原理与应用介绍 2018-05-08
68 技术:高效文本拼接 2018-05-11
69 技术:方法与实践学习笔记 2018-05-12
70 技术:方法与工具 2018-05-12
71 技术:功能解析 2018-05-17
72 技术:高效数据输入 2018-05-21
73 技术:基础模型与方法 2018-05-22
74 技术:功能与使用体验 2018-05-26
75 技术:特征筛选学习笔记 2018-05-29
76 技术:实战技巧 2018-05-30
77 技术:建模思路解析 2018-06-03
78 技术:策略与实战 2018-06-03
79 技术:数据展示指南 2018-06-04
80 技术:包与环境配置指南 2018-07-14
81 技术:高效操作指南 2018-07-19
82 技术:方法与案例解析 2018-07-24
83 技术:统计建模学习笔记 2018-07-24
84 技术:展示技巧与原则 2018-08-10
85 技术:数据采集实战技巧 2018-08-21
86 技术:指标设计学习笔记 2018-09-20
87 技术:建模流程实战 2018-10-01
88 技术:大规模数据探索 2018-10-20
89 技术:文本提取与分析 2018-10-20
90 技术:原理与R实现实战 2018-10-21
91 技术:学习资源获取技巧 2018-10-23
92 技术:深度学习模型实战 2018-10-24
93 技术:实战指南 2018-10-30
94 技术:分析与展示指南 2018-11-03
95 技术:图片编辑与转换 2018-11-03
96 技术:安装与使用基础学习笔记 2018-11-07
97 技术:非结构化数据处理 2018-11-29
98 技术:表格美化技巧 2018-12-13
99 技术:分类数据可视化 2018-12-24
100 技术:流程图绘制技巧 2018-12-24
101 技术:自动化设置 2018-12-28
102 技术:协作与版本控制 2018-12-29
103 技术:pipeline设计 2018-12-30
104 技术:Git历史记录清理 2018-12-31
105 技术:AUC指标对比 2019-01-01
106 技术:时间序列可视化 2019-01-01
107 技术:变量命名工具指南 2019-01-02
108 技术:网页自动化截图 2019-01-02
109 技术:配置与优化 2019-01-03
110 技术:原理与应用 2019-01-07
111 技术:语法与核心概念 2019-01-14
112 技术:R包徽章设计 2019-01-15
113 技术:项目结构设计 2019-01-21
114 技术:文本分类基础任务 2019-01-22
115 技术:线性与非线性模型 2019-01-22
116 技术:有效性验证 2019-01-27
117 技术:评估与应用 2019-01-29
118 技术:循环神经网络入门 2019-01-30
119 技术:长短期记忆网络入门 2019-01-30
120 技术:for循环示例 2019-02-03
121 技术:基础到进阶 2019-02-06
122 技术:查询与整合 2019-02-06
123 技术:方法与案例 2019-02-14
124 技术:R包高效开发指南 2019-02-20
125 技术:解析与操作 2019-02-20
126 技术:训练与预测 2019-02-25
127 技术:原理与代码 2019-02-26
128 技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 技术:方法与工具 2019-03-07
130 技术:文本特征提取示例 2019-03-08
131 技术:基础任务示例 2019-03-18
132 技术:条形图与表头设计 2019-03-20
133 技术:连续与分类变量差异 2019-03-30
134 技术:思路与方法 2019-04-08
135 技术:方法与工具 2019-04-15
136 技术:多格式读取 2019-04-16
137 技术:方法与工具 2019-05-11
138 技术:Git/GitHub/GitLab 2019-05-13
139 技术:命令与操作 2019-05-19
140 技术:协作与版本控制 2019-05-26
141 技术:语法与实践 2019-06-28
142 技术:功能与API 2019-07-13
143 技术:安装与使用 2019-07-24
144 读《未来简史》:技术与未来 2019-09-14
145 技术:高效数据处理 2019-10-09
146 技术:性能优化技巧 2019-10-12
147 技术:配置与运维 2019-10-29
148 技术:原理与经典模型 2019-12-25
149 技术:构建到发布流程 2019-12-26
150 技术:方法与案例 2019-12-27
151 技术:命令与自动化 2019-12-30
152 技术:Pandas数据处理实战指南 2020-01-19
153 技术:特征工程之目标编码学习笔记 2020-01-20
154 技术:文档编写与美化 2020-01-28
155 技术:核心算法与应用 2020-01-29
156 技术:流程图绘制技巧 2020-01-29
157 技术:DataCamp课程笔记 2020-01-31
158 技术:Python实用代码片段合集 2020-01-31
159 技术:自动化构建流程 2020-02-02
160 技术:自动化工作流配置 2020-02-04
161 技术:高效查找代码与项目 2020-02-11
162 技术:代码环境快速部署 2020-02-24
163 技术:USD数据分析论文收录暨GitBook发布 2020-05-02
164 游记:西安博物院(5)西汉器物工艺到新莽技术应用 2020-10-01
165 技术:Causal Forest 2021-03-18
166 技术小团队人才培养思考:压力・复盘・沉淀 2024-05-21
167 BJ Fogg模型:从说服技术理论到行为设计实践 2024-11-24
168 管理视角:技术团队的核心交付是什么 2025-02-13
169 研读毛选:核心技术三大特征 2025-03-28