After speaking with Esri support I have learned that this is currently a bug (BUG-000154587). There is currently no way to get a dataframe returned when using the date ranges of "30D" and "60D". It currently only returns an empty dataframe or None. I did discover, however, that the dictionary response option still works.
To get a dictionary for the items usage you have to set the as_df parameter to False. Once the dictionary is returned you have to parse out the parts you need and sum the usage for each day to get the total usage for that time period. I am not very good at dealing with dictionaries but breaking the dictionary down to its component parts like this solves my issue.
Assume you have a dictionary returned for an item like this:
testDictionary = item.usage(date_range='30D',as_df=False)
result:
{'startTime': 1669593600000, 'endTime': 1672272000000, 'period': '1d', 'data': [{'etype': 'randomUser', 'name': 'randomFeatureService', 'stype': 'features', 'num': [['1669593600000', '0'], ['1669680000000', '0'], ['1669766400000', '0'], ['1669852800000', '0'], ['1669939200000', '0'], ['1670025600000', '0'], ['1670112000000', '0'], ['1670198400000', '0'], ['1670284800000', '0'], ['1670371200000', '0'], ['1670457600000', '0'], ['1670544000000', '0'], ['1670630400000', '0'], ['1670716800000', '0'], ['1670803200000', '0'], ['1670889600000', '0'], ['1670976000000', '0'], ['1671062400000', '0'], ['1671148800000', '0'], ['1671235200000', '0'], ['1671321600000', '0'], ['1671408000000', '0'], ['1671494400000', '0'], ['1671580800000', '0'], ['1671667200000', '0'], ['1671753600000', '0'], ['1671840000000', '0'], ['1671926400000', '0'], ['1672012800000', '0'], ['1672099200000', '27'], ['1672185600000', '79']]}]}
You can break each part down and then sum the totals per day like this:
dataFromDict = testDictionary['data']
nestedDict = dataFromDict[0]
numFromNested = nestedDict['num']
totalUsage30 = 0
for list in numFromNested:
totalUsage30 += int(list[1])
print(totalUsage30)
The "num" keyword in the nested dictionary holds all of the information for day (epoch time) and usage per day in nested lists. This gets me the 30-day usage. I have to repeat the process for the 60-day usage.
I also asked whether the item.numViews property could be filtered to specific timeframes and that is not possible. It would be more beneficial to me in my specific scenario to see views instead of usage for 30 and 60 days, but that is not currently an option.