Python for循环输出到数据框

用户名

我是python的新手,已经开始在COVID-19锁定期间学习编程。我认为这将是一个很好的实践数据集,因此建立了一个程序,可以根据输入参数对数据进行图形处理。我建立了一个for循环,可以遍历数据,为指定的每个国家绘制一条线,然后执行线性回归,输出给定日期的预测值。输出的print语句可以很好地满足我想要的数据,但我想将其转换为称为预测的数据框。我很难做到这一点,并尝试了一个numpy数组以及使用熊猫。我能够输出到数组或数据框,但是它只会从循环迭代的最后一个条目中输入数据。我已经阅读了其他类似问题的帖子,但是我可以 不能足够准确地阅读他们的代码以为我的代码画出类似的解决方案。任何帮助将非常感激。

prediction = pd.DataFrame()

countries = [country for country in covid4]

for country in covid4:
    plt.plot(covid4.index, covid4[country], marker = ',', linestyle = '-', linewidth = 2)

    slope, intercept, rval, pval, stder = linregress(covid4.index, covid4[country])
    y2 = (slope * days_from_covid_start) + intercept
    print(country, y2, (rval**2), pval, stder)

    #prediction = pd.DataFrame({'country': country, 'predicted': y2, 'rval': (rval**2), 'pval': pval, 'stder': stder}, index = [len(country)])
    prediction.append(pd.DataFrame([country,y2, (rval**2), pval, stder], index=[0]), ignore_index=True)
print output = US 5179943.844549271 0.9006676283944509 2.6485459147090845e-114 621.5097854328127
Brazil 2936531.6824269355 0.7832301173896118 2.574767200468765e-76 594.2400982216876
India 2073088.1203383887 0.6345313255372067 7.298314985773991e-51 624.2194955678399
Russia 978300.4286278635 0.9142926929617138 1.7522978381731647e-121 108.50766510347822
Peru 505978.0715319741 0.858987519325372 2.99136171150524e-97 76.57252904070529
Colombia 356724.59233558143 0.6333783192991587 1.0395048549255093e-50 107.7550260556157
South Africa 472308.1410419348 0.6966400875418044 6.071717833597016e-60 122.57207991971943
Mexico 466476.80000000005 0.8003861479274035 2.486332913502741e-80 89.06795808066232
Spain 406391.36529570003 0.9113259379908633 7.934640637615308e-120 39.7913275775704
Argentina 231457.53997115127 0.6268247164508722 7.600868471677846e-50 70.99075237604976
Chile 400397.3610073682 0.8667991679346673 5.033317538752307e-100 58.15733490786391
Iran 361576.26469403406 0.964179243093371 6.270093847731166e-164 23.965905293313885
United Kingdom 396538.81819552195 0.9237619398832538 3.5207778505031074e-127 36.6462363789314
France 307895.94598781073 0.9160909120260833 1.628524516693465e-122 29.273492653868225
Bangladesh 258210.0824529258 0.8134667793006155 1.245704530630672e-83 47.16886076960728
Saudi Arabia 301026.7291359661 0.8720838496759029 5.387824647150151e-102 42.7760188991517

*** edit covid4在每个国家/地区都有一列,并列出了该日期的索引,这些行表示该国家/地区在该日期的案件。

对于上下文,完整代码如下

#specifies countries that have above 'n' number
n = 300000

#search for a specific country's COVID data from the date specified.
country_to_find = ['']
value = 'cases'
today = '7/30/20'
#specifies how many days from covid first onset to map linear regression model for country to find
days_from_covid_start = 230


import matplotlib.pyplot as plt 
import pandas as pd
import numpy as np
from datetime import date
import seaborn as sns
from scipy.stats import linregress

sns.set()

df = pd.read_csv('https://data.humdata.org/hxlproxy/api/data-preview.csv?url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_covid19_confirmed_global.csv&filename=time_series_covid19_confirmed_global.csv')
covid = df.groupby('Country/Region', as_index = False).sum()

date_i = covid[(today)]
G = str(date_i.sum())
covid = covid.sort_values((today), ascending=False)

covid.drop(columns=['Lat', 'Long'], inplace=True)
sig_cases = covid[date_i <= n].index
covid.drop(sig_cases, inplace=True)
plt.figure(figsize=(14,7.2))
sns.barplot(y = covid['Country/Region'], x = date_i, data = covid, )


covid = covid.sort_values((today), ascending=True)
x_values = range(len(covid['Country/Region']))
countries = covid['Country/Region'].map(str)


print(date_i)
#matplotlib graph, shows the same data as previous seaborn plot

'''cases = covid[(today)]
plt.figure(figsize=(14,7.2))
plt.ylabel('Countries')
plt.xlabel('Total Recorded')
plt.title('Covid Cases By Country', size = 10)
group = covid.groupby('Country/Region').sum()
plt.yticks(x_values, countries, rotation= 0, size = 10)
plt.barh(x_values, cases,  color='Red')
plt.grid()'''



covid.sort_values((today), ascending = False, inplace = True)

covid_transposed = covid.transpose()

covid_transposed.columns = covid_transposed.iloc[0]
covid_transposed2 = covid_transposed[1:]

covid_transposed2.to_csv('covid_transposed_new_index.csv', index = False)
covid_transposed2.to_csv('covid_transposed_new.csv')


covid5 = pd.read_csv('covid_transposed_new.csv')
covid5.rename( columns={'Unnamed: 0':'Date'}, inplace=True)
sns.set_style("ticks")
plt.subplot()
plt.figure(figsize=(14,7.2))

for country in covid5:
    if country in country_to_find:
        plt.plot(covid5.index, covid5[country], marker = ',', linestyle = '-', linewidth = 2)
        slope, intercept, rval, pval, stder = linregress(covid5.index, covid5[country])
        y = (slope * days_from_covid_start) + intercept
        print(y, rval **2 , pval, stder)

plt.xticks(covid5.index[::30], covid5.Date[::30])
plt.legend(country_to_find, loc=2, prop={'size': 15})
plt.xticks(rotation=32, size = 15)
plt.yticks(size = 15)
plt.title('Covid ' +str(value)+ ' per selected country', size=20)
plt.ylabel('Num ' +str(value), size=20)
plt.xlabel('Date', size=20)
plt.grid(True)

covid4 = pd.read_csv('covid_transposed_new_index.csv')

plt.figure(figsize=(14,7.2))

plt.subplot()
prediction = pd.DataFrame()

countries = [country for country in covid4]

for country in covid4:
    plt.plot(covid4.index, covid4[country], marker = ',', linestyle = '-', linewidth = 2)
    slope, intercept, rval, pval, stder = linregress(covid4.index, covid4[country])
    y2 = (slope * days_from_covid_start) + intercept
    prediction.append(pd.DataFrame(np.array([[country], [y2], [(rval**2)], [pval], [stder]])))
    print(country, y2, (rval**2), pval, stder)
    

plt.xticks(covid4.index[::30])
plt.legend(countries, loc=2, prop={'size': 9})
plt.xticks(rotation=32, size = 15)
plt.yticks(size = 15)
plt.title('Covid ' +str(value)+ ' per selected country', size=20)
plt.ylabel('Num ' +str(value), size=20)
plt.xlabel('Days from first COVID-19 identification', size=20)
plt.grid(True)

sns.set_style("darkgrid")


plt.show()

print(str('Total cases as of date ' + str(today) + ' is ')+ G)
print(prediction)

ps我知道回归模型不起作用哈哈

数据包丢失

DataFrame.append()追加到指定的dataframe对象,然后返回一个新对象。

文献资料

您可以使用所需的列创建初始对象,然后在追加到dataframe对象时确保为其指定新对象。

prediction = pd.DataFrame(columns=['country', 'y2', 'rval', 'pval', 'stder'])

for country in covid4:
    plt.plot(covid4.index, covid4[country], marker = ',', linestyle = '-', linewidth = 2)
    slope, intercept, rval, pval, stder = linregress(covid4.index, covid4[country])
    y2 = (slope * days_from_covid_start) + intercept
    prediction = prediction.append(pd.DataFrame(data={'country': country, 'y2': y2, 'rval': (rval**2), 'pval': pval, 'stder': stder}, index = [0]), ignore_index = True)
    print(country, y2, (rval**2), pval, stder)

输出结果如下:

          country            y2      rval           pval       stder
0              US  5.179944e+06  0.900668  2.648546e-114  621.509785
1          Brazil  2.936532e+06  0.783230   2.574767e-76  594.240098
2           India  2.073088e+06  0.634531   7.298315e-51  624.219496
3          Russia  9.783004e+05  0.914293  1.752298e-121  108.507665
4    South Africa  4.723081e+05  0.696640   6.071718e-60  122.572080
5          Mexico  4.664768e+05  0.800386   2.486333e-80   89.067958
6            Peru  5.059781e+05  0.858988   2.991362e-97   76.572529
7           Chile  4.003974e+05  0.866799  5.033318e-100   58.157335
8  United Kingdom  3.965388e+05  0.923762  3.520778e-127   36.646236
9            Iran  3.615763e+05  0.964179  6.270094e-164   23.965905

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python数据框将列连接起来并输出到嵌套行

来自分类Dev

For循环数据框python

来自分类Dev

将 Python 数据框导出到 Excel

来自分类Dev

循环数据框列python

来自分类Dev

Python3-编写循环输出到文件

来自分类Dev

Python 从 FOR 循环输出到有效的 JSON

来自分类Dev

将Google BigQuery数据导出到Python Pandas数据框

来自分类Dev

Python输出到CSV

来自分类Dev

Python输出到CSV

来自分类Dev

使用循环填充空的python数据框

来自分类Dev

Python-用数据框循环字典

来自分类Dev

避免在熊猫数据框中循环-python

来自分类Dev

为什么此Python循环无法输出到下一个可用的excel行?

来自分类Dev

Python Popen输出到ac程序,fget循环读取相同的stdin

来自分类Dev

Python,循环浏览目录中的文件,计算单词频率,将结果输出到txt

来自分类Dev

Python Popen输出到ac程序,fget循环读取相同的stdin

来自分类Dev

在循环中调用时,Python子进程不会输出到文件

来自分类Dev

在python中将具有不同数据类型的pandas数据框导出到csv

来自分类Dev

Python将数据框的列与数字进行比较并产生输出

来自分类Dev

熊猫数据框中的多个输出(Python Web抓取)

来自分类Dev

在Pandas数据框中使用python的错误CAGR输出

来自分类Dev

Python readlines()并将数据附加到每一行输出到一行

来自分类Dev

Python-Beautifulsoup-仅将最终刮取链接中的数据输出到文本文件

来自分类Dev

如何使用python使用scrapy将多个网页抓取的数据输出到csv文件中

来自分类Dev

Python从文件中提取数据并输出到另一个

来自分类Dev

使用 int (python) 读取日志数据的二进制文件并输出到新文件

来自分类Dev

Python Pandas:将数据框导出到Excel时如何指定起始单元格位置

来自分类Dev

Python将字典转换为数据框并将其导出到CSV文件

来自分类Dev

循环遍历Pandas数据框以填充列表(Python)

Related 相关文章

  1. 1

    Python数据框将列连接起来并输出到嵌套行

  2. 2

    For循环数据框python

  3. 3

    将 Python 数据框导出到 Excel

  4. 4

    循环数据框列python

  5. 5

    Python3-编写循环输出到文件

  6. 6

    Python 从 FOR 循环输出到有效的 JSON

  7. 7

    将Google BigQuery数据导出到Python Pandas数据框

  8. 8

    Python输出到CSV

  9. 9

    Python输出到CSV

  10. 10

    使用循环填充空的python数据框

  11. 11

    Python-用数据框循环字典

  12. 12

    避免在熊猫数据框中循环-python

  13. 13

    为什么此Python循环无法输出到下一个可用的excel行?

  14. 14

    Python Popen输出到ac程序,fget循环读取相同的stdin

  15. 15

    Python,循环浏览目录中的文件,计算单词频率,将结果输出到txt

  16. 16

    Python Popen输出到ac程序,fget循环读取相同的stdin

  17. 17

    在循环中调用时,Python子进程不会输出到文件

  18. 18

    在python中将具有不同数据类型的pandas数据框导出到csv

  19. 19

    Python将数据框的列与数字进行比较并产生输出

  20. 20

    熊猫数据框中的多个输出(Python Web抓取)

  21. 21

    在Pandas数据框中使用python的错误CAGR输出

  22. 22

    Python readlines()并将数据附加到每一行输出到一行

  23. 23

    Python-Beautifulsoup-仅将最终刮取链接中的数据输出到文本文件

  24. 24

    如何使用python使用scrapy将多个网页抓取的数据输出到csv文件中

  25. 25

    Python从文件中提取数据并输出到另一个

  26. 26

    使用 int (python) 读取日志数据的二进制文件并输出到新文件

  27. 27

    Python Pandas:将数据框导出到Excel时如何指定起始单元格位置

  28. 28

    Python将字典转换为数据框并将其导出到CSV文件

  29. 29

    循环遍历Pandas数据框以填充列表(Python)

热门标签

归档