<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Calculate daily change between unique values in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88680#M6887</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for providing this sample - I'll see if I can make it work. I had some real hope today that Esri's new Coronavirus&amp;nbsp;Recovery Dashboard was going to take care of this for me but alas, they require that the data&amp;nbsp;already has&amp;nbsp;the daily increase to calculate the trends.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 11 May 2020 15:22:50 GMT</pubDate>
    <dc:creator>SaraJK</dc:creator>
    <dc:date>2020-05-11T15:22:50Z</dc:date>
    <item>
      <title>Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88676#M6883</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am working with COVID19 case data and created a dashboard. I have a Jupyter Notebook inside ArcGIS Pro to process the heath dept.'s CSV file everyday. That said, I am a complete novice with Python and fumbled my way though but got something working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I now have a request to show the daily change in cases from the previous day. The source data table just lists the cumulative cases each day over time and lumps the dates together:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;Date&amp;nbsp;&amp;nbsp;&amp;nbsp;FIPS&amp;nbsp;&amp;nbsp;&amp;nbsp;Cases&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;5/7/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp;5/7/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;5/6/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/P&gt;&lt;P&gt;4&amp;nbsp; &amp;nbsp;5/6/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/P&gt;&lt;P&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;5/5/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/P&gt;&lt;P&gt;6&amp;nbsp; &amp;nbsp;5/5/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/P&gt;&lt;P&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;5/4/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/P&gt;&lt;P&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;5/4/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to add a field where it contains the change in value from the previous day:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;Date&amp;nbsp;&amp;nbsp;&amp;nbsp;FIPS&amp;nbsp;&amp;nbsp;&amp;nbsp;Cases&amp;nbsp;&amp;nbsp;&amp;nbsp;Difference&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;5/7/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;5/6/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;23&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;5/5/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;/P&gt;&lt;P&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;5/4/20&amp;nbsp;&amp;nbsp;&amp;nbsp;001&amp;nbsp;&amp;nbsp;&amp;nbsp;21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 (because this is the starting value)&lt;/P&gt;&lt;P&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;5/7/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/P&gt;&lt;P&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;5/6/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/P&gt;&lt;P&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;5/5/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/P&gt;&lt;P&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;5/4/20&amp;nbsp;&amp;nbsp;&amp;nbsp;002&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 (start)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The goal is a time series chart showing the sum of the daily changes for all FIPS by date (but might need to show them by FIPS as well). I know others are doing it but maybe their source data is supplied that way.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This seems like it should be fairly simple but I don't know where to start. Right now I am downloading the csv, truncating the table in my GDB, then appending the csv data to the table to refresh it every day.&amp;nbsp;I think&amp;nbsp;I need a bit of code to run daily to recalculate the difference after I grab the new day's values.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Appreciate any direction. Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2020 16:50:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88676#M6883</guid>
      <dc:creator>SaraJK</dc:creator>
      <dc:date>2020-05-07T16:50:19Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88677#M6884</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sara, if you have Data Interoperability extension then change detection between next/previous values in a series is available in the AttributeManager.&amp;nbsp; I don't want to send you down this path if its all new to you though as you're working on response data.&amp;nbsp; If you need to pursue this let me know.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2020 16:56:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88677#M6884</guid>
      <dc:creator>BruceHarold</dc:creator>
      <dc:date>2020-05-07T16:56:42Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88678#M6885</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the quick reply, but I'm afraid I do not have that extension. Sounds ideal though.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2020 17:11:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88678#M6885</guid>
      <dc:creator>SaraJK</dc:creator>
      <dc:date>2020-05-07T17:11:48Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88679#M6886</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You could do it with dictionaries. Use the FIPS as the key. Each value could be a list of tuples with 2 values (date, case_num)&amp;nbsp; After you build the dictionaries sort each list by the date part of the tuple. Then take the top two list elements and subtract the case number. Output data done!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Maybe something like this... (not&amp;nbsp;jupyter notebook)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;code:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color: #cc7832;"&gt;import &lt;/SPAN&gt;csv

&lt;SPAN style="color: #cc7832;"&gt;with &lt;/SPAN&gt;&lt;SPAN style="color: #8888c6;"&gt;open&lt;/SPAN&gt;(&lt;SPAN style="color: #a5c261;"&gt;'case.csv'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #a5c261;"&gt;'r'&lt;/SPAN&gt;) &lt;SPAN style="color: #cc7832;"&gt;as &lt;/SPAN&gt;f:
    reader = csv.reader(f)
    data = &lt;SPAN style="color: #8888c6;"&gt;list&lt;/SPAN&gt;(reader)
    data.pop(&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;)
    data = [x[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;:] &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;x &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;data]
    data_dict = {x[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]: [] &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;x &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;data}
    &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;row &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;data:
        data_list = data_dict[row[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]]
        data_list.append((row[&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;]&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;row[&lt;SPAN style="color: #6897bb;"&gt;2&lt;/SPAN&gt;]))
        data_dict[row[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]] = data_list
    &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;key&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;value &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;data_dict.items():
        value.sort(&lt;SPAN style="color: #aa4926;"&gt;reverse&lt;/SPAN&gt;=&lt;SPAN style="color: #8888c6;"&gt;True&lt;/SPAN&gt;)
        &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;i &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;&lt;SPAN style="color: #8888c6;"&gt;range&lt;/SPAN&gt;(&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #8888c6;"&gt;len&lt;/SPAN&gt;(value) - &lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;):
            diff = &lt;SPAN style="color: #8888c6;"&gt;int&lt;/SPAN&gt;(value&lt;I&gt;[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]) - &lt;SPAN style="color: #8888c6;"&gt;int&lt;/SPAN&gt;(value[i + &lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;][&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;])
            &lt;SPAN style="color: #cc7832;"&gt;print &lt;/SPAN&gt;&lt;SPAN style="color: #a5c261;"&gt;'{},{},{},{}'&lt;/SPAN&gt;.format(key&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;value&lt;I&gt;[&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;]&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;value&lt;I&gt;[&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;diff)
        &lt;SPAN style="color: #cc7832;"&gt;print &lt;/SPAN&gt;&lt;SPAN style="color: #a5c261;"&gt;'{},{},{},{}'&lt;/SPAN&gt;.format(key&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;value[-&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;][&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;]&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;value[-&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;][&lt;SPAN style="color: #6897bb;"&gt;1&lt;/SPAN&gt;]&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #6897bb;"&gt;0&lt;/SPAN&gt;)&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;P&gt;csv:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;ID,Date,FIPS,Cases
7,5/4/20,001,21
8,5/4/20,002,6
1,5/7/20,001,25
2,5/7/20,002,13
3,5/6/20,001,23
4,5/6/20,002,9
5,5/5/20,001,21
6,5/5/20,002,8&lt;/PRE&gt;&lt;P&gt;output:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;002,5/7/20,13,4
002,5/6/20,9,1
002,5/5/20,8,2
002,5/4/20,6,0
001,5/7/20,25,2
001,5/6/20,23,2
001,5/5/20,21,0
001,5/4/20,21,0&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 23:23:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88679#M6886</guid>
      <dc:creator>forestknutsen1</dc:creator>
      <dc:date>2021-12-10T23:23:46Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88680#M6887</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for providing this sample - I'll see if I can make it work. I had some real hope today that Esri's new Coronavirus&amp;nbsp;Recovery Dashboard was going to take care of this for me but alas, they require that the data&amp;nbsp;already has&amp;nbsp;the daily increase to calculate the trends.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2020 15:22:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88680#M6887</guid>
      <dc:creator>SaraJK</dc:creator>
      <dc:date>2020-05-11T15:22:50Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate daily change between unique values</title>
      <link>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88681#M6888</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;you're welcome... I updated the code sample so the output will do the calc for all dates, not just the top two.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2020 17:06:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/calculate-daily-change-between-unique-values/m-p/88681#M6888</guid>
      <dc:creator>forestknutsen1</dc:creator>
      <dc:date>2020-05-11T17:06:38Z</dc:date>
    </item>
  </channel>
</rss>

