CHARLS_meteorology.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import pandas as pd
  2. def sunlight(CHARLS_data):
  3. years = [2011, 2013,2015, 2018, 2020]
  4. for year in years:
  5. #读取日照数据
  6. sunlight_data_cur = pd.read_excel(f"气象数据/2000-2020年按年逐年日照/【{year}年】逐年日照.xlsx")
  7. sunlight_data_cur = sunlight_data_cur[["城市", "累积日照"]]
  8. sunlight_data_cur = sunlight_data_cur.rename(columns={"累积日照":"cur_sunlight"})
  9. sunlight_data_last = pd.read_excel(f"气象数据/2000-2020年按年逐年日照/【{year-1}年】逐年日照.xlsx")
  10. sunlight_data_last = sunlight_data_last[["城市", "累积日照"]]
  11. sunlight_data_last = sunlight_data_last.rename(columns={"累积日照":"last_sunlight"})
  12. sunlight_data_before_last = pd.read_excel(f"气象数据/2000-2020年按年逐年日照/【{year-2}年】逐年日照.xlsx")
  13. sunlight_data_before_last = sunlight_data_before_last[["城市", "累积日照"]]
  14. sunlight_data_before_last = sunlight_data_before_last.rename(columns={"累积日照":"before_sunlight"})
  15. #开始筛选出year的数据
  16. CHARLS_data_year = CHARLS_data[CHARLS_data['wave']==year]
  17. #合并日照
  18. table_merge = pd.merge(CHARLS_data_year, sunlight_data_cur, left_on="city", right_on="城市", how='left')
  19. table_merge = pd.merge(table_merge, sunlight_data_last, left_on="city", right_on="城市", how='left')
  20. table_merge = pd.merge(table_merge, sunlight_data_before_last, left_on="city", right_on="城市", how='left')
  21. #更新CHARLS表
  22. CHARLS_data.loc[CHARLS_data['wave']==year, 'cur_year_sunlight'] = table_merge['cur_sunlight'].values
  23. CHARLS_data.loc[CHARLS_data['wave']==year, 'last_year_sunlight'] = table_merge['last_sunlight'].values
  24. CHARLS_data.loc[CHARLS_data['wave']==year, 'before_last_sunlight'] = table_merge['before_sunlight'].values
  25. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  26. print(year)
  27. def wind(CHARLS_data):
  28. years = [2011, 2013,2015, 2018, 2020]
  29. for year in years:
  30. #读取日照数据
  31. wind_data_cur = pd.read_excel(f"气象数据/2000-2020年按年逐年风速/【{year}年】逐年风速.xlsx")
  32. wind_data_cur = wind_data_cur[["城市", "平均风速"]]
  33. wind_data_cur = wind_data_cur.rename(columns={"平均风速":"cur_wind"})
  34. wind_data_last = pd.read_excel(f"气象数据/2000-2020年按年逐年风速/【{year-1}年】逐年风速.xlsx")
  35. wind_data_last = wind_data_last[["城市", "平均风速"]]
  36. wind_data_last = wind_data_last.rename(columns={"平均风速":"last_wind"})
  37. wind_data_before_last = pd.read_excel(f"气象数据/2000-2020年按年逐年风速/【{year-2}年】逐年风速.xlsx")
  38. wind_data_before_last = wind_data_before_last[["城市", "平均风速"]]
  39. wind_data_before_last = wind_data_before_last.rename(columns={"平均风速":"before_wind"})
  40. #开始筛选出year的数据
  41. CHARLS_data_year = CHARLS_data[CHARLS_data['wave']==year]
  42. #合并日照
  43. table_merge = pd.merge(CHARLS_data_year, wind_data_cur, left_on="city", right_on="城市", how='left')
  44. table_merge = pd.merge(table_merge, wind_data_last, left_on="city", right_on="城市", how='left')
  45. table_merge = pd.merge(table_merge, wind_data_before_last, left_on="city", right_on="城市", how='left')
  46. #更新CHARLS表
  47. CHARLS_data.loc[CHARLS_data['wave']==year, 'cur_year_wind'] = table_merge['cur_wind'].values
  48. CHARLS_data.loc[CHARLS_data['wave']==year, 'last_year_wind'] = table_merge['last_wind'].values
  49. CHARLS_data.loc[CHARLS_data['wave']==year, 'before_last_wind'] = table_merge['before_wind'].values
  50. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  51. print(year)
  52. def rain(CHARLS_data):
  53. years = [2011, 2013,2015, 2018, 2020]
  54. for year in years:
  55. #读取日照数据
  56. rain_data_cur = pd.read_excel(f"气象数据/2000-2020年按年逐年降水/【{year}年】逐年降水.xlsx")
  57. rain_data_cur = rain_data_cur[["城市", "累积降水"]]
  58. rain_data_cur = rain_data_cur.rename(columns={"累积降水":"cur_rain"})
  59. rain_data_last = pd.read_excel(f"气象数据/2000-2020年按年逐年降水/【{year-1}年】逐年降水.xlsx")
  60. rain_data_last = rain_data_last[["城市", "累积降水"]]
  61. rain_data_last = rain_data_last.rename(columns={"累积降水":"last_rain"})
  62. rain_data_before_last = pd.read_excel(f"气象数据/2000-2020年按年逐年降水/【{year-2}年】逐年降水.xlsx")
  63. rain_data_before_last = rain_data_before_last[["城市", "累积降水"]]
  64. rain_data_before_last = rain_data_before_last.rename(columns={"累积降水":"before_rain"})
  65. #开始筛选出year的数据
  66. CHARLS_data_year = CHARLS_data[CHARLS_data['wave']==year]
  67. #合并日照
  68. table_merge = pd.merge(CHARLS_data_year, rain_data_cur, left_on="city", right_on="城市", how='left')
  69. table_merge = pd.merge(table_merge, rain_data_last, left_on="city", right_on="城市", how='left')
  70. table_merge = pd.merge(table_merge, rain_data_before_last, left_on="city", right_on="城市", how='left')
  71. #更新CHARLS表
  72. CHARLS_data.loc[CHARLS_data['wave']==year, 'cur_year_rain'] = table_merge['cur_rain'].values
  73. CHARLS_data.loc[CHARLS_data['wave']==year, 'last_year_rain'] = table_merge['last_rain'].values
  74. CHARLS_data.loc[CHARLS_data['wave']==year, 'before_last_rain'] = table_merge['before_rain'].values
  75. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  76. print(year)
  77. def temperature(CHARLS_data):
  78. years = [2011, 2013,2015, 2018, 2020]
  79. for year in years:
  80. #读取日照数据
  81. temperature_data_cur = pd.read_excel(f"气象数据/2000-2020年按年逐年气温/【{year}年】逐年气温.xlsx")
  82. temperature_data_cur = temperature_data_cur[["城市", "平均气温"]]
  83. temperature_data_cur = temperature_data_cur.rename(columns={"平均气温":"cur_temperature"})
  84. temperature_data_last = pd.read_excel(f"气象数据/2000-2020年按年逐年气温/【{year-1}年】逐年气温.xlsx")
  85. temperature_data_last = temperature_data_last[["城市", "平均气温"]]
  86. temperature_data_last = temperature_data_last.rename(columns={"平均气温":"last_temperature"})
  87. temperature_data_before_last = pd.read_excel(f"气象数据/2000-2020年按年逐年气温/【{year-2}年】逐年气温.xlsx")
  88. temperature_data_before_last = temperature_data_before_last[["城市", "平均气温"]]
  89. temperature_data_before_last = temperature_data_before_last.rename(columns={"平均气温":"before_temperature"})
  90. #开始筛选出year的数据
  91. CHARLS_data_year = CHARLS_data[CHARLS_data['wave']==year]
  92. #合并日照
  93. table_merge = pd.merge(CHARLS_data_year, temperature_data_cur, left_on="city", right_on="城市", how='left')
  94. table_merge = pd.merge(table_merge, temperature_data_last, left_on="city", right_on="城市", how='left')
  95. table_merge = pd.merge(table_merge, temperature_data_before_last, left_on="city", right_on="城市", how='left')
  96. #更新CHARLS表
  97. CHARLS_data.loc[CHARLS_data['wave']==year, 'cur_year_temperature'] = table_merge['cur_temperature'].values
  98. CHARLS_data.loc[CHARLS_data['wave']==year, 'last_year_temperature'] = table_merge['last_temperature'].values
  99. CHARLS_data.loc[CHARLS_data['wave']==year, 'before_last_temperature'] = table_merge['before_temperature'].values
  100. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  101. print(year)
  102. def humidity(CHARLS_data):
  103. years = [2011, 2013,2015, 2018, 2020]
  104. for year in years:
  105. #读取日照数据
  106. humidity_data_cur = pd.read_excel(f"气象数据/2000-2020年按年逐年湿度/【{year}年】逐年湿度.xlsx")
  107. humidity_data_cur = humidity_data_cur[["城市", "平均湿度"]]
  108. humidity_data_cur = humidity_data_cur.rename(columns={"平均湿度":"cur_humidity"})
  109. humidity_data_last = pd.read_excel(f"气象数据/2000-2020年按年逐年湿度/【{year-1}年】逐年湿度.xlsx")
  110. humidity_data_last = humidity_data_last[["城市", "平均湿度"]]
  111. humidity_data_last = humidity_data_last.rename(columns={"平均湿度":"last_humidity"})
  112. humidity_data_before_last = pd.read_excel(f"气象数据/2000-2020年按年逐年湿度/【{year-2}年】逐年湿度.xlsx")
  113. humidity_data_before_last = humidity_data_before_last[["城市", "平均湿度"]]
  114. humidity_data_before_last = humidity_data_before_last.rename(columns={"平均湿度":"before_humidity"})
  115. #开始筛选出year的数据
  116. CHARLS_data_year = CHARLS_data[CHARLS_data['wave']==year]
  117. #合并日照
  118. table_merge = pd.merge(CHARLS_data_year, humidity_data_cur, left_on="city", right_on="城市", how='left')
  119. table_merge = pd.merge(table_merge, humidity_data_last, left_on="city", right_on="城市", how='left')
  120. table_merge = pd.merge(table_merge, humidity_data_before_last, left_on="city", right_on="城市", how='left')
  121. #更新CHARLS表
  122. CHARLS_data.loc[CHARLS_data['wave']==year, 'cur_year_humidity'] = table_merge['cur_humidity'].values
  123. CHARLS_data.loc[CHARLS_data['wave']==year, 'last_year_humidity'] = table_merge['last_humidity'].values
  124. CHARLS_data.loc[CHARLS_data['wave']==year, 'before_last_humidity'] = table_merge['before_humidity'].values
  125. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  126. print(year)
  127. if __name__ == "__main__":
  128. #读取CHARLS数据
  129. CHARLS_data = pd.read_csv("CHARLS_data_p_n.csv")
  130. CHARLS_data.to_csv("CHARLS_data_p_n_m.csv",index=False)
  131. CHARLS_data = pd.read_csv("CHARLS_data_p_n_m.csv")
  132. sunlight(CHARLS_data)
  133. CHARLS_data = pd.read_csv("CHARLS_data_p_n_m.csv")
  134. wind(CHARLS_data)
  135. CHARLS_data = pd.read_csv("CHARLS_data_p_n_m.csv")
  136. rain(CHARLS_data)
  137. CHARLS_data = pd.read_csv("CHARLS_data_p_n_m.csv")
  138. temperature(CHARLS_data)
  139. CHARLS_data = pd.read_csv("CHARLS_data_p_n_m.csv")
  140. humidity(CHARLS_data)