当前位置:   article > 正文

数据可视化——Pyecharts_数据可视化导入pyecharts整个库

数据可视化导入pyecharts整个库

编辑器:jupyter notebook 

一、数据处理

1.将数据导入数据库

  1. import os
  2. import pandas as pd
  3. from sqlalchemy import create_engine
  4. engine = create_engine('mysql+pymysql://root:root@localhost:3306/db?charset=utf8')
  5. # 用户:root
  6. # 密码:root
  7. # 服务器:localhost
  8. # 端口号:3306
  9. # 库名:db
  10. # 指定目录
  11. path = './data'
  12. df = pd.DataFrame() # 存储数据
  13. for i in os.listdir(path):
  14. # 文件路径及名称
  15. name = os.path.join(path, i)
  16. # 单一文件的数据
  17. data = pd.read_excel(name)
  18. # 逐个插入DataFrame
  19. df = df.append(data, ignore_index=True)
  20. df['houseInfo2'] = df['houseInfo2'].fillna('-').str.replace('\s', '')
  21. df.to_sql('house_info', engine, index=False, if_exists='replace')
  22. # The default value of regex will change from True to False in a future version
  23. # 在未来的版本中,正则表达式的默认值将从True更改为False
  24. # house_info 清洗前的表
  25. sql = 'select * from db.house_info'
  26. df = pd.read_sql(sql, con=engine)
  27. df.to_excel('house_info.xlsx', index=False)
  28. df.head()

2.数据清洗

  1. import pandas as pd
  2. from sqlalchemy import create_engine
  3. engine = create_engine('mysql+pymysql://root:root@localhost:3306/db?charset=utf8')
  4. df = pd.read_sql('select * from db.house_info', engine)
  5. df.info()
  6. ‘’‘
  7. <class 'pandas.core.frame.DataFrame'>
  8. RangeIndex: 6000 entries, 0 to 5999
  9. Data columns (total 8 columns):
  10. # Column Non-Null Count Dtype
  11. --- ------ -------------- -----
  12. 0 title 6000 non-null object
  13. 1 totalPrice 6000 non-null float64
  14. 2 unitPrice 6000 non-null object
  15. 3 positionInfo1 6000 non-null object
  16. 4 positionInfo2 6000 non-null object
  17. 5 houseInfo1 6000 non-null object
  18. 6 houseInfo2 6000 non-null object
  19. 7 saleInfo 6000 non-null object
  20. dtypes: float64(1), object(7)
  21. memory usage: 375.1+ KB
  22. ’‘’
  23. df.rename({
  24. 'title': '标题',
  25. 'totalPrice': '总价',
  26. 'unitPrice': '单价',
  27. 'positionInfo1': '小区',
  28. 'houseInfo1': '户型'},
  29. axis=1,
  30. inplace=True)
  31. # 从0开始索引,左闭(含)右开(不含)
  32. df['区域'] = df['positionInfo2'].str[0:2]
  33. # 2-室-1-厅-1-卫
  34. df[['卧室数量', '厅室数量', '卫生间数量']] = df['户型'].str.extract(pat='(\d+)-室-(\d+)-厅-(\d+)-卫', expand=True)
  35. # 60.2㎡-南北-低层(共28层)-2021年建造
  36. df[['面积', '朝向', '楼层信息', '建造信息']] = df['houseInfo2'].str.split(pat='-', expand=True)
  37. # "()"分组匹配,"\"转义,引用括号本身
  38. df[['楼层类型', '总楼层']] = df['楼层信息'].str.extract(pat='(.*?)\(共(\d+)层\)', expand=True)
  39. # \d:匹配数值,数量:{1,}
  40. df['建造年份'] = df['建造信息'].str.extract(pat='(\d+)', expand=True)
  41. df[['销售人员', '服务评分', '地产公司']] = df['saleInfo'].str.split(pat='-', expand=True)
  42. df.drop(
  43. labels=['positionInfo2', 'houseInfo2', 'saleInfo'],
  44. axis=1,
  45. inplace=True)
  46. # 清洗包含字符串单位的字段
  47. df['单价'] = pd.to_numeric(df['单价'].str.replace('元/㎡', '')) # to_numeric 转换为数字格式
  48. df['面积'] = pd.to_numeric(df['面积'].str.replace('㎡', ''))
  49. df['服务评分'] = pd.to_numeric(df['服务评分'].str.replace('分', ''), errors='coerce') # errors='coerce' 异常数据返回空值
  50. df['卧室数量'] = pd.to_numeric(df['卧室数量'])
  51. df['厅室数量'] = pd.to_numeric(df['厅室数量'])
  52. df['卫生间数量'] = pd.to_numeric(df['卫生间数量'])
  53. df['总楼层'] = pd.to_numeric(df['总楼层'])
  54. # 空值处理:forward向前填充, backward向后填充
  55. # 服务评分(均值填充)
  56. df['总楼层'].fillna(method='bfill', inplace=True)
  57. df['楼层信息'].fillna(method='bfill', inplace=True)
  58. df['建造信息'].fillna(method='bfill', inplace=True)
  59. df['楼层类型'].fillna(method='bfill', inplace=True)
  60. df['建造年份'].fillna(method='bfill', inplace=True)
  61. df['地产公司'].fillna(method='bfill', inplace=True)
  62. df['服务评分'].fillna(value=df['服务评分'].mean(), inplace=True)
  63. df['总楼层'] = df['总楼层'].astype(int)
  64. df['建造年份'] = df['建造年份'].astype(int)
  65. # 查看某列的唯一值
  66. df['区域'].unique()
  67. '''
  68. array(['南山', '坪山', '龙岗', '龙华', '福田', '大鹏', '宝安', '深圳', '罗湖', '布吉', '光明',
  69. '盐田'], dtype=object)
  70. '''
  71. # 或 set(df['区域'])
  72. df = df[~(df['区域'] == '深圳')]
  73. df['区域'].unique()
  74. ‘’‘
  75. array(['南山', '坪山', '龙岗', '龙华', '福田', '大鹏', '宝安', '罗湖', '布吉', '光明', '盐田'],
  76. dtype=object)
  77. ’‘’
  78. df.to_sql('house_data', engine, index=False, if_exists='replace')
  79. # house_data 清洗后的表
  80. sql = 'select * from db.house_data'
  81. df = pd.read_sql(sql, con=engine)
  82. df.to_excel('house_data.xlsx', index=False)
  83. df.head()

二、配置静态资源服务

1.获取 pyecharts-assets 项目

下载链接:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/286646

推荐阅读
  

闽ICP备14008679号