【问题标题】:Trying to make a plot of a csv file试图绘制一个 csv 文件的图
【发布时间】:2021-08-03 21:03:13
【问题描述】:

https://data.cdc.gov/Case-Surveillance/United-States-COVID-19-Cases-and-Deaths-by-State-o/9mfq-cb36 使用上面链接中的数据。 想要绘制爱荷华州每周平均新增病例的图表,但在尝试格式化日期时遇到了问题。 我的代码如下

import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
import matplotlib.dates as mdates
import numpy as mp

d = pd.read_csv (r'C:\Users\me\Downloads\final_project_data.csv') #import csv file
d# print csv file to make sure everything is correct



state = "IA" #put abriviation of choosen state here
data = data.loc[d["state"] == state] # locate all data points where the state is the choosen state
data

这是我尝试格式化的日期,以便我可以制作每周移动平均线。

data["date"] = pd.to_datetime(data["submission_date"])

使用上述方法我得到一个错误

<ipython-input-22-938db9badc5a>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  data["date"] = pd.to_datetime(data["submission_date"])

然后我尝试了另一种方法

data['submission_date']= pd.to_datetime(data['submission_date'],format='%mm%dd%yyyy') # converts date to datetime field
data = reset_my_index(data) # reverse order of dataframe so later dates are last
data = data.loc[:,['submission_date','new_case']] # select columns to work with

这让我想起了

的错误信息
TypeError                                 Traceback (most recent call last)
~\anaconda\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    449             try:
--> 450                 values, tz = conversion.datetime_to_datetime64(arg)
    451                 dta = DatetimeArray(values, dtype=tz_to_dtype(tz))

pandas\_libs\tslibs\conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()

TypeError: Unrecognized value type: <class 'str'>

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-31-39ff0f95742c> in <module>
----> 1 data['submission_date']= pd.to_datetime(data['submission_date'],format='%mm%dd%yyyy') # converts date to datetime field
      2 data = reset_my_index(data) # reverse order of dataframe so later dates are last
      3 data = data.loc[:,['submission_date','new_case']] # select columns to work with

~\anaconda\lib\site-packages\pandas\core\tools\datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
    801             result = arg.map(cache_array)
    802         else:
--> 803             values = convert_listlike(arg._values, format)
    804             result = arg._constructor(values, index=arg.index, name=arg.name)
    805     elif isinstance(arg, (ABCDataFrame, abc.MutableMapping)):

~\anaconda\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    452                 return DatetimeIndex._simple_new(dta, name=name)
    453             except (ValueError, TypeError):
--> 454                 raise e
    455 
    456     if result is None:

~\anaconda\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    415             if result is None:
    416                 try:
--> 417                     result, timezones = array_strptime(
    418                         arg, format, exact=exact, errors=errors
    419                     )

pandas\_libs\tslibs\strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()

ValueError: time data '06/02/2020' does not match format '%mm%dd%yyyy' (match)

任何帮助将不胜感激,因为我的想法不多了。谢谢!

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    此修复很简单 - 您需要重置 data 数据帧的索引。请参阅下面的代码。

    import pandas as pd
    from datetime import datetime
    import matplotlib.pyplot as plt
    from matplotlib.dates import DateFormatter
    import matplotlib.dates as mdates
    import numpy as mp
    
    d = pd.read_csv (r'covid.csv') #import csv file
    
    state = "IA" #put abriviation of choosen state here
    data = d.loc[d["state"] == state] # locate all data points where the state is the choosen state
    data = data.reset_index() # Reset the index
    data["date"] = pd.to_datetime(data["submission_date"]) # no error should occur now
    
    

    我相信您的错误说明了发生这种情况的原因:当您创建 data = d.loc[d["state"] == state] 时,您正在获取原始数据帧的一个切片并尝试从同一切片为其分配一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 2013-11-28
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      相关资源
      最近更新 更多