Exemple #1
0
def internal_flow_history(area: str = "北京市",
                          date: str = "20200412") -> pd.DataFrame:
    """
    百度地图慧眼-百度迁徙-城内出行强度
    * 城内出行强度: 该城市有出行的人数与该城市居住人口比值的指数化结果.
    * 当前数据更新于可能有延迟, 具体延迟请看相关页面提示.
    * 2019年城内出行强度指数将于2020年3月15日停止更新.
    https://qianxi.baidu.com/
    :param area: 可以输入 "省份" 或者 "具体城市" 但是需要用全称, 如: 北京市
    :type area: str
    :param date: 查询的日期 20200101以后的时间
    :type date: str
    :return: 2019-2020 的城市出行强度数据
    :rtype: pandas.DataFrame
    """
    city_dict.update(province_dict)
    inner_dict = dict(zip(city_dict.values(), city_dict.keys()))
    url = "https://huiyan.baidu.com/migration/internalflowhistory.jsonp"
    payload = {
        "dt": "city",
        "id": inner_dict[area],
        "date": date,
    }
    r = requests.get(url, params=payload)
    json_data = json.loads(r.text[r.text.find("({") + 1:r.text.rfind(");")])
    temp_df = pd.DataFrame.from_dict(json_data["data"]["list"],
                                     orient="index").sort_index()
    temp_df.columns = ["value"]
    return temp_df
Exemple #2
0
def migration_area_baidu(area="乌鲁木齐市", indicator="move_in", date="20200201"):
    """
    百度地图慧眼-百度迁徙-XXX迁入地详情
    百度地图慧眼-百度迁徙-XXX迁出地详情
    以上展示 top100 结果,如不够 100 则展示全部
    迁入来源地比例: 从 xx 地迁入到当前区域的人数与当前区域迁入总人口的比值
    迁出目的地比例: 从当前区域迁出到 xx 的人口与从当前区域迁出总人口的比值
    https://qianxi.baidu.com/?from=shoubai#city=0
    :param area: 可以输入 省份 或者 具体城市 但是需要用全称
    :type area: str
    :param indicator: move_in 迁入 move_out 迁出
    :type indicator: str
    :param date: 查询的日期 20200101以后的时间
    :type date: str
    :return: 迁入地详情/迁出地详情的前50个
    :rtype: pandas.DataFrame
    """
    city_dict.update(province_dict)
    inner_dict = dict(zip(city_dict.values(), city_dict.keys()))
    if inner_dict[area] in province_dict.keys():
        dt_flag = "province"
    else:
        dt_flag = "city"
    url = "https://huiyan.baidu.com/migration/cityrank.jsonp"
    payload = {
        "dt": dt_flag,
        "id": inner_dict[area],
        "type": indicator,
        "date": date,
    }
    r = requests.get(url, params=payload)
    json_data = json.loads(r.text[r.text.find("({") + 1:r.text.rfind(");")])
    return pd.DataFrame(json_data["data"]["list"])
Exemple #3
0
def migration_scale_baidu(
    area: str = "佛山市",
    indicator: str = "move_out",
    start_date: str = "20200110",
    end_date: str = "20200315",
) -> pd.DataFrame:
    """
    百度地图慧眼-百度迁徙-迁徙规模
    * 迁徙规模指数:反映迁入或迁出人口规模,城市间可横向对比
    * 城市迁徙边界采用该城市行政区划,包含该城市管辖的区、县、乡、村
    https://qianxi.baidu.com/?from=shoubai#city=0
    :param area: 可以输入 省份 或者 具体城市 但是需要用全称
    :type area: str
    :param indicator: move_in 迁入 move_out 迁出
    :type indicator: str
    :param start_date: 开始查询的日期 默认就可以
    :type start_date: str
    :param end_date: 结束查询的日期 20200101 以后的时间
    :type end_date: str
    :return: 时间序列的迁徙规模指数
    :rtype: pandas.DataFrame
    """
    city_dict.update(province_dict)
    inner_dict = dict(zip(city_dict.values(), city_dict.keys()))
    if inner_dict[area] in province_dict.keys():
        dt_flag = "province"
    else:
        dt_flag = "city"
    url = "https://huiyan.baidu.com/migration/historycurve.jsonp"
    payload = {
        "dt": dt_flag,
        "id": inner_dict[area],
        "type": indicator,
        "startDate": start_date,
        "endDate": end_date,
    }
    r = requests.get(url, params=payload)
    json_data = json.loads(r.text[r.text.find("({") + 1 : r.text.rfind(");")])
    temp_df = pd.DataFrame.from_dict(json_data["data"]["list"], orient="index")
    temp_df.index = pd.to_datetime(temp_df.index)
    temp_df.columns = ["迁徙规模指数"]
    return temp_df[start_date:end_date]