Files
MoFin/venv/lib/python3.12/site-packages/akshare/other/other_car_cpca.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- 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,直连正常
2026-06-30 02:56:35 +08:00

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)