fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
935 lines
34 KiB
Python
935 lines
34 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2024/8/3 20:00
|
|
Desc: 乘联会
|
|
http://data.cpcadata.com/FuelMarket
|
|
"""
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
|
|
def car_market_total_cpca(
|
|
symbol: str = "狭义乘用车", indicator: str = "产量"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-总体市场
|
|
http://data.cpcadata.com/TotalMarket
|
|
:param symbol: choice of {"狭义乘用车", "广义乘用车"}
|
|
:type symbol: str
|
|
:param indicator: choice of {"产量", "批发", "零售", "出口"}
|
|
:type indicator: str
|
|
:return: 统计数据-总体市场
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "1"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
big_df = pd.DataFrame()
|
|
if symbol == "狭义乘用车":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
if indicator == "产量":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "批发":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "零售":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "出口":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 3], temp_previous_year_df.iloc[:, 3]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
else:
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
if indicator == "产量":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "批发":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "零售":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif indicator == "出口":
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 3], temp_previous_year_df.iloc[:, 3]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
|
|
return big_df
|
|
|
|
|
|
def __car_market_man_rank_cpca_pifa(symbol: str = "狭义乘用车-累计") -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-厂商排名
|
|
http://data.cpcadata.com/ManRank
|
|
:param symbol: choice of {"狭义乘用车-单月", "狭义乘用车-累计", "广义乘用车-单月", "广义乘用车-累计"}
|
|
:type symbol: str
|
|
:return: 统计数据-厂商排名
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "2"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
big_df = pd.DataFrame()
|
|
if symbol == "狭义乘用车-累计":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "狭义乘用车-单月":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "广义乘用车-累计":
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[2]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "广义乘用车-单月":
|
|
temp_df = pd.DataFrame(data_json[3]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[3]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 0], temp_previous_year_df.iloc[:, 0]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
return big_df
|
|
|
|
|
|
def __car_market_man_rank_cpca_lingshou(
|
|
symbol: str = "狭义乘用车-累计",
|
|
) -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-厂商排名
|
|
http://data.cpcadata.com/ManRank
|
|
:param symbol: choice of {"狭义乘用车-单月", "狭义乘用车-累计", "广义乘用车-单月", "广义乘用车-累计"}
|
|
:type symbol: str
|
|
:return: 统计数据-厂商排名
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist_2"
|
|
params = {"charttype": "2"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
big_df = pd.DataFrame()
|
|
if symbol == "狭义乘用车-累计":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "狭义乘用车-单月":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "广义乘用车-累计":
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[2]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "广义乘用车-单月":
|
|
temp_df = pd.DataFrame(data_json[3]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[3]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["厂商"] = temp_df["厂商"]
|
|
big_df = big_df[
|
|
[
|
|
"厂商",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
return big_df
|
|
|
|
|
|
def car_market_man_rank_cpca(
|
|
symbol: str = "狭义乘用车-单月", indicator: str = "批发"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-厂商排名
|
|
http://data.cpcadata.com/ManRank
|
|
:param symbol: choice of {"狭义乘用车-单月", "狭义乘用车-累计", "广义乘用车-单月", "广义乘用车-累计"}
|
|
:type symbol: str
|
|
:param indicator: choice of {"批发", "零售"}
|
|
:type indicator: str
|
|
:return: 统计数据-厂商排名
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
if indicator == "批发":
|
|
temp_df = __car_market_man_rank_cpca_pifa(symbol=symbol)
|
|
return temp_df
|
|
else:
|
|
temp_df = __car_market_man_rank_cpca_lingshou(symbol=symbol)
|
|
return temp_df
|
|
|
|
|
|
def __car_market_cate_cpca_pifa(symbol: str = "MPV") -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-车型大类
|
|
http://data.cpcadata.com/CategoryMarket
|
|
:param symbol: choice of {"轿车", "MPV", "SUV", "占比"}
|
|
:type symbol: str
|
|
:return: 统计数据-车型大类
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "3"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
big_df = pd.DataFrame()
|
|
if symbol == "MPV":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "SUV":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "轿车":
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[2]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 1], temp_previous_year_df.iloc[:, 1]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[1],
|
|
temp_df.columns[2],
|
|
]
|
|
]
|
|
elif symbol == "占比":
|
|
temp_df = pd.DataFrame(data_json[3]["dataList"])
|
|
temp_mpv_year_list = []
|
|
temp_suv_year_list = []
|
|
temp_jiaoche_year_list = []
|
|
for item in data_json[3]["dataList"]:
|
|
temp_mpv_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_suv_year_list.append(item[temp_df.columns[2]])
|
|
temp_jiaoche_year_list.append(item[temp_df.columns[3]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_mpv_year_df = pd.DataFrame(temp_mpv_year_list)
|
|
temp_suv_year_df = pd.DataFrame(temp_suv_year_list)
|
|
temp_jiaoche_year_df = pd.DataFrame(temp_jiaoche_year_list)
|
|
big_df = pd.DataFrame(
|
|
[
|
|
temp_mpv_year_df.iloc[:, 2],
|
|
temp_suv_year_df.iloc[:, 2],
|
|
temp_jiaoche_year_df.iloc[:, 2],
|
|
]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2], temp_df.columns[3]]
|
|
big_df["月份"] = temp_df["月份"]
|
|
big_df = big_df[
|
|
["月份", temp_df.columns[1], temp_df.columns[2], temp_df.columns[3]]
|
|
]
|
|
return big_df
|
|
|
|
|
|
def __car_market_cate_cpca_lingshou(
|
|
symbol: str = "狭义乘用车-累计",
|
|
) -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-车型大类
|
|
http://data.cpcadata.com/CategoryMarket
|
|
:param symbol: choice of {"轿车", "MPV", "SUV", "占比"}
|
|
:type symbol: str
|
|
:return: 统计数据-车型大类
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "3"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
big_df = pd.DataFrame()
|
|
if symbol == "MPV":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "SUV":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "轿车":
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[2]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[2]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[2], temp_df.columns[1]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "占比":
|
|
temp_df = pd.DataFrame(data_json[3]["dataList"])
|
|
temp_mpv_year_list = []
|
|
temp_suv_year_list = []
|
|
temp_jiaoche_year_list = []
|
|
for item in data_json[3]["dataList"]:
|
|
temp_mpv_year_list.append(item[temp_df.columns[1]])
|
|
try:
|
|
temp_suv_year_list.append(item[temp_df.columns[2]])
|
|
temp_jiaoche_year_list.append(item[temp_df.columns[3]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_mpv_year_df = pd.DataFrame(temp_mpv_year_list)
|
|
temp_suv_year_df = pd.DataFrame(temp_suv_year_list)
|
|
temp_jiaoche_year_df = pd.DataFrame(temp_jiaoche_year_list)
|
|
big_df = pd.DataFrame(
|
|
[
|
|
temp_mpv_year_df.iloc[:, 3],
|
|
temp_suv_year_df.iloc[:, 3],
|
|
temp_jiaoche_year_df.iloc[:, 3],
|
|
]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2], temp_df.columns[3]]
|
|
big_df["月份"] = temp_df["月份"]
|
|
big_df = big_df[
|
|
["月份", temp_df.columns[1], temp_df.columns[2], temp_df.columns[3]]
|
|
]
|
|
return big_df
|
|
|
|
|
|
def car_market_cate_cpca(symbol: str = "轿车", indicator: str = "批发") -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-车型大类
|
|
http://data.cpcadata.com/CategoryMarket
|
|
:param symbol: choice of {"轿车", "MPV", "SUV", "占比"}
|
|
:type symbol: str
|
|
:param indicator: choice of {"批发", "零售"}
|
|
:type indicator: str
|
|
:return: 统计数据-车型大类
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
if indicator == "批发":
|
|
temp_df = __car_market_cate_cpca_pifa(symbol=symbol)
|
|
return temp_df
|
|
else:
|
|
temp_df = __car_market_cate_cpca_lingshou(symbol=symbol)
|
|
return temp_df
|
|
|
|
|
|
def car_market_country_cpca() -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-国别细分市场
|
|
http://data.cpcadata.com/CountryMarket
|
|
:return: 统计数据-车型大类
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "4"}
|
|
r = requests.get(url=url, params=params)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
for item in temp_df.columns[1:]:
|
|
temp_list = []
|
|
for item_list in temp_df[item]:
|
|
temp_list.append(item_list[2])
|
|
temp_df[item] = pd.to_numeric(temp_list, errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
def car_market_segment_cpca(symbol: str = "轿车") -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-级别细分市场
|
|
http://data.cpcadata.com/SegmentMarket
|
|
:param symbol: choice of {"轿车", "MPV", "SUV"}
|
|
:type symbol: str
|
|
:return: 统计数据-车型大类
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "5"}
|
|
r = requests.get(url=url, params=params)
|
|
data_json = r.json()
|
|
if symbol == "MPV":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
for item in temp_df.columns[1:]:
|
|
temp_list = []
|
|
for item_list in temp_df[item]:
|
|
temp_list.append(item_list[2])
|
|
temp_df[item] = pd.to_numeric(temp_list, errors="coerce")
|
|
elif symbol == "SUV":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
for item in temp_df.columns[1:]:
|
|
temp_list = []
|
|
for item_list in temp_df[item]:
|
|
temp_list.append(item_list[2])
|
|
temp_df[item] = pd.to_numeric(temp_list, errors="coerce")
|
|
else:
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
for item in temp_df.columns[1:]:
|
|
temp_list = []
|
|
for item_list in temp_df[item]:
|
|
temp_list.append(item_list[2])
|
|
temp_df[item] = pd.to_numeric(temp_list, errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
def car_market_fuel_cpca(symbol: str = "整体市场") -> pd.DataFrame:
|
|
"""
|
|
乘联会-统计数据-新能源细分市场
|
|
:param symbol: choice of {"整体市场", "销量占比-PHEV-BEV", "销量占比-ICE-NEV"}
|
|
:type symbol: str
|
|
https://data.cpcadata.com/FuelMarket
|
|
:return: 新能源细分市场
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "http://data.cpcadata.com/api/chartlist"
|
|
params = {"charttype": "6"}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
if symbol == "整体市场":
|
|
temp_df = pd.DataFrame(data_json[0]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[0]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["month"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
elif symbol == "销量占比-PHEV-BEV":
|
|
temp_df = pd.DataFrame(data_json[1]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[1]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["月份"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
else:
|
|
temp_df = pd.DataFrame(data_json[2]["dataList"])
|
|
temp_current_year_list = []
|
|
temp_previous_year_list = []
|
|
for item in data_json[2]["dataList"]:
|
|
temp_previous_year_list.append(item[temp_df.columns[2]])
|
|
try:
|
|
temp_current_year_list.append(item[temp_df.columns[1]])
|
|
except: # noqa: E722
|
|
continue
|
|
temp_current_year_df = pd.DataFrame(temp_current_year_list)
|
|
temp_previous_year_df = pd.DataFrame(temp_previous_year_list)
|
|
big_df = pd.DataFrame(
|
|
[temp_current_year_df.iloc[:, 2], temp_previous_year_df.iloc[:, 2]]
|
|
).T
|
|
big_df.columns = [temp_df.columns[1], temp_df.columns[2]]
|
|
big_df["月份"] = temp_df["月份"]
|
|
big_df = big_df[
|
|
[
|
|
"月份",
|
|
temp_df.columns[2],
|
|
temp_df.columns[1],
|
|
]
|
|
]
|
|
return big_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="狭义乘用车", indicator="产量"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="广义乘用车", indicator="产量"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="狭义乘用车", indicator="批发"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="广义乘用车", indicator="批发"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="狭义乘用车", indicator="零售"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="广义乘用车", indicator="零售"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="狭义乘用车", indicator="出口"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_total_cpca_df = car_market_total_cpca(
|
|
symbol="广义乘用车", indicator="出口"
|
|
)
|
|
print(car_market_total_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="狭义乘用车-单月", indicator="批发"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="狭义乘用车-累计", indicator="批发"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="广义乘用车-单月", indicator="批发"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="广义乘用车-累计", indicator="批发"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="狭义乘用车-单月", indicator="零售"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="狭义乘用车-累计", indicator="零售"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="广义乘用车-单月", indicator="零售"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_man_rank_cpca_df = car_market_man_rank_cpca(
|
|
symbol="广义乘用车-累计", indicator="零售"
|
|
)
|
|
print(car_market_man_rank_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="轿车", indicator="批发")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="MPV", indicator="批发")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="SUV", indicator="批发")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="占比", indicator="批发")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="轿车", indicator="零售")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="MPV", indicator="零售")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="SUV", indicator="零售")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_cate_cpca_df = car_market_cate_cpca(symbol="占比", indicator="零售")
|
|
print(car_market_cate_cpca_df)
|
|
|
|
car_market_country_cpca_df = car_market_country_cpca()
|
|
print(car_market_country_cpca_df)
|
|
|
|
car_market_segment_cpca_df = car_market_segment_cpca(symbol="轿车")
|
|
print(car_market_segment_cpca_df)
|
|
|
|
car_market_segment_cpca_df = car_market_segment_cpca(symbol="MPV")
|
|
print(car_market_segment_cpca_df)
|
|
|
|
car_market_segment_cpca_df = car_market_segment_cpca(symbol="SUV")
|
|
print(car_market_segment_cpca_df)
|
|
|
|
car_market_fuel_cpca_df = car_market_fuel_cpca(symbol="整体市场")
|
|
print(car_market_fuel_cpca_df)
|
|
|
|
car_market_fuel_cpca_df = car_market_fuel_cpca(symbol="销量占比-PHEV-BEV")
|
|
print(car_market_fuel_cpca_df)
|
|
|
|
car_market_fuel_cpca_df = car_market_fuel_cpca(symbol="销量占比-ICE-NEV")
|
|
print(car_market_fuel_cpca_df)
|