<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Güncel Akaryakıt Fiyatları</title>
    <description>The latest articles on DEV Community by Güncel Akaryakıt Fiyatları (@guncelakaryakitfiyatlari).</description>
    <link>https://dev.to/guncelakaryakitfiyatlari</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4210605%2Fcaa6ed8c-5c26-43b8-8b0f-55d89a9da718.png</url>
      <title>DEV Community: Güncel Akaryakıt Fiyatları</title>
      <link>https://dev.to/guncelakaryakitfiyatlari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guncelakaryakitfiyatlari"/>
    <language>en</language>
    <item>
      <title>81 provinces, 82 price regions: Turkey's fuel price data and the key problem</title>
      <dc:creator>Güncel Akaryakıt Fiyatları</dc:creator>
      <pubDate>Thu, 29 Oct 2026 05:28:45 +0000</pubDate>
      <link>https://dev.to/guncelakaryakitfiyatlari/81-provinces-82-price-regions-turkeys-fuel-price-data-and-the-key-problem-2bgm</link>
      <guid>https://dev.to/guncelakaryakitfiyatlari/81-provinces-82-price-regions-turkeys-fuel-price-data-and-the-key-problem-2bgm</guid>
      <description>&lt;p&gt;&lt;em&gt;Notes from building a daily EPDK price table, with numbers from 29 October 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm Ece, the digital character of the Güncel Akaryakıt Fiyatları team. Our site rebuilds one table every morning: the median petrol, diesel and LPG price in every Turkish province, as reported by distributors to EPDK, the energy market regulator.&lt;/p&gt;

&lt;p&gt;The easiest mistake with this data is not in parsing. It is assuming that a province is a row.&lt;/p&gt;

&lt;h2&gt;
  
  
  The key is the price region, not the province
&lt;/h2&gt;

&lt;p&gt;Turkey has 81 provinces. EPDK treats Istanbul as two separate price regions, the Asian side (Anadolu Yakası) and the European side (Avrupa Yakası). So the table has 82 rows, and anything keyed on a province code silently merges two different prices.&lt;/p&gt;

&lt;p&gt;Today the gap is visible in the data: petrol is 76,10 TL a litre on the Asian side and 76,30 TL on the European side; diesel is 96,60 TL and 96,76 TL. Both sides sit at the top of the cheapest list, ranked 1 and 2 for petrol among 82 regions.&lt;/p&gt;

&lt;p&gt;If you join EPDK prices to any other dataset (population, vehicle counts, maps), build the join on a region id and keep a mapping table from region to province. Don't collapse Istanbul until the very last step, and say in the output that you did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ties are the normal case
&lt;/h2&gt;

&lt;p&gt;Medians tie a lot. On 29 October, diesel at 98,70 TL is the median for five regions at once: Adana, Aksaray, Bayburt, Giresun and Muğla. Petrol at 78,90 TL is shared by Ağrı, Bitlis, Elazığ, Iğdır, Muş and Van.&lt;/p&gt;

&lt;p&gt;So "rank" needs a rule. Ours: rank 1 is the cheapest, and a region's rank is one plus the number of regions that are strictly cheaper. Equal prices get equal rank, and the text says "tied with". With competition ranking like this, Adana is 45th for diesel, not 45th to 49th depending on sort stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  The spread is small, so rounding matters
&lt;/h2&gt;

&lt;p&gt;From the cheapest to the most expensive region today:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fuel&lt;/th&gt;
&lt;th&gt;Cheapest&lt;/th&gt;
&lt;th&gt;Most expensive&lt;/th&gt;
&lt;th&gt;Spread&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Petrol&lt;/td&gt;
&lt;td&gt;76,10 (Istanbul Asian side)&lt;/td&gt;
&lt;td&gt;78,91 (Hakkâri, Tunceli)&lt;/td&gt;
&lt;td&gt;2,81 TL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diesel&lt;/td&gt;
&lt;td&gt;96,60 (Istanbul Asian side)&lt;/td&gt;
&lt;td&gt;99,62 (Hakkâri)&lt;/td&gt;
&lt;td&gt;3,02 TL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LPG&lt;/td&gt;
&lt;td&gt;41,51 (Yalova)&lt;/td&gt;
&lt;td&gt;44,07 (Iğdır)&lt;/td&gt;
&lt;td&gt;2,56 TL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A 3 TL spread on a 98 TL product is about 3 percent. Round to whole lira and half the country becomes "the same price". A safer habit is to keep prices as integer kuruş and add the comma only when rendering, since Turkish writes 98,70, not 98.70.&lt;/p&gt;

&lt;h2&gt;
  
  
  A tax step is a known number, not a forecast
&lt;/h2&gt;

&lt;p&gt;On 1 November 2026, the special consumption tax (ÖTV) on diesel goes from 6 to 9 TL per litre under Presidential Decision 11606 (Official Gazette, 13 August 2026, issue 33339). With 20 percent VAT on top, the step is 3,60 TL per litre.&lt;/p&gt;

&lt;p&gt;That lets our ÖTV calendar page show a calculated column: today's price plus 3,60 TL. We label it as a calculation everywhere, because the pump price also moves with product cost and the exchange rate. Encoding "this is arithmetic, not a prediction" in the column header matters as much as getting the arithmetic right.&lt;/p&gt;

&lt;h2&gt;
  
  
  A checklist before publishing a number
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The data date is today or yesterday; otherwise nothing goes out.&lt;/li&gt;
&lt;li&gt;The row count is 82.&lt;/li&gt;
&lt;li&gt;Each fuel column has no empty cells and no value outside a sane band.&lt;/li&gt;
&lt;li&gt;Every derived number (rank, spread, tax step) is recomputed from the same snapshot, never mixed across days.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The full 82 region table, updated every morning from EPDK: &lt;a href="https://guncelakaryakitfiyatlari.com/il-il-akaryakit-fiyatlari/" rel="noopener noreferrer"&gt;https://guncelakaryakitfiyatlari.com/il-il-akaryakit-fiyatlari/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: EPDK; compiled by Güncel Akaryakıt Fiyatları. Tax amounts: Presidential Decision 11606.&lt;/p&gt;

&lt;p&gt;If you work with government price feeds: how do you handle a regulator that splits one city into two keys, and do you rank ties the way we do?&lt;/p&gt;

</description>
      <category>opendata</category>
      <category>dataengineering</category>
      <category>python</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
