BG Development


Страници: (19) 1 [2] 3 4 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> На кой му се играе на "big data scientist"?, задачка-закачка за големи
sieg
Публикувано на: 12-11-2018, 23:52
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 242
Регистриран на: 22.07.10



QUOTE (purjola @ 12-11-2018, 23:35)
Астрономическо време означава да извадиш периода от минути, в който средното замърсяване за двата размера прахови частици е най-голямо от всички периоди.

"Периода от минути" е най-леймърското описание, което съм чувал през живота, и то при положение че попитах предварително за прецизност. Период от КОЛКО минути??? Една, 15, 60? Ама какво искаш от PHP програмисти...
Ти въобще пусна ли си кода върху файла? icon_question.gif
PMEmail Poster
Top
purjola
Публикувано на: 12-11-2018, 23:56
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2366
Регистриран на: 18.10.11



Период, смятан в минути, дава достатъчно висока точност с малко сметки. Иначе сензора може да дава данни всяка СЕКУНДА ... Направи си сметка за отчитане на максимума от средно 40µg за период една година колко данни ще трябва реално да парсваш. Тук са само 6 гигабайта ...
PMEmail Poster
Top
sieg
Публикувано на: 13-11-2018, 00:04
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 242
Регистриран на: 22.07.10



QUOTE (purjola @ 12-11-2018, 23:56)
Период, смятан в минути, дава достатъчно висока точност с малко сметки. Иначе сензора може да дава данни всяка СЕКУНДА ... Направи си сметка за отчитане на максимума от средно 40µg за период една година колко данни ще трябва реално да парсваш. Тук са само 6 гигабайта ...

Ти си напушен, няма друго обяснение.
PMEmail Poster
Top
SuN
Публикувано на: 13-11-2018, 00:05
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8771
Регистриран на: 27.01.05



От примерните данни, които гледах наистина има отчитания на всяка секунда. Така, че с най-голяма точност до секундата може да се определят замърсяванията. Най-големия интервал от време пък е за целия месец Октомври макар, че който иска може да си свали и за другите месеци назад до 2015.

QUOTE
15835;SDS011;8089;50.259;10.965;2018-10-01T00:00:00;8.30;;;5.47;;
7158;SDS011;3621;52.375;13.097;2018-10-01T00:00:00;9.67;;;6.20;;
12308;SDS011;6217;48.150;17.142;2018-10-01T00:00:01;10.00;;;6.90;;
2466;SDS011;1245;47.999;7.851;2018-10-01T00:00:01;10.97;;;8.50;;


Това мнение е било редактирано от SuN на 13-11-2018, 00:07
PMEmail Poster
Top
sieg
Публикувано на: 13-11-2018, 00:08
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 242
Регистриран на: 22.07.10



QUOTE (SuN @ 13-11-2018, 00:05)
От примерните данни, които гледах наистина има отчитания на всяка секунда. Така, че с най-голяма точност до секундата може да се определят замърсяванията. Най-големия интервал от време пък е за целия месец Октомври макар, че който иска може да си свали и за другите месеци назад до 2015.

CODE
15835;SDS011;8089;50.259;10.965;2018-10-01T00:00:[b]00[/b];8.30;;;5.47;;
7158;SDS011;3621;52.375;13.097;2018-10-01T00:00:[b]00[/b];9.67;;;6.20;;
12308;SDS011;6217;48.150;17.142;2018-10-01T00:00:[b]01[/b];10.00;;;6.90;;
2466;SDS011;1245;47.999;7.851;2018-10-01T00:00:[b]01[/b];10.97;;;8.50;;

Да, предполагам, че има и по-често от секунда. Въпросът е за какъв период искаш да се намери най-високата стойност. Най-просто решение е да покажа просто моментът в който е най-високо, и моментът в който е най-ниско, това съм и направил. Но има и други способи - да се вземе период от, да речем, 1 час, и да се сметне средното, и оттам да се търси най-високото и най-виското.
PMEmail Poster
Top
SuN
Публикувано на: 13-11-2018, 00:10
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8771
Регистриран на: 27.01.05



Ами чисто човешки погледнато - какво ни грее, че някакъв сензор показва смъртоносно замърсяване в дадена секунда, а в следващата всичко е наред?

За една секунда не може да вземеш никакви мерки, така че или ще си го преживял събитието или ще си умрял и няма проблеми. icon_smile.gif

П.С.

Ако някой не се е светнал още - в България картината от сензорите изглежда горе-долу така: https://airsofia.info/ (ама е неудобно за цъкане на всяко поленце за да се видят числовите стойности).

Това мнение е било редактирано от SuN на 13-11-2018, 00:12
PMEmail Poster
Top
sieg
Публикувано на: 13-11-2018, 00:19
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 242
Регистриран на: 22.07.10



CODE
class PMData
   {
       public int SensorId { get; set; }

       public string SensorType { get; set; }

       public string Location { get; set; }

       public double Latitue { get; set; }

       public double Longitude { get; set; }

       public DateTime Timestamp { get; set; }

       public double P1 { get; set; }

       public double P2 { get; set; }

       public static PMData FromCsvLine(string s)
       {
           var fields = s.Split(';');
           try
           {
               return new PMData
               {
                   SensorId = int.Parse(fields[0]),
                   SensorType = fields[1],
                   Location = fields[2],
                   Latitue = double.Parse(fields[3]),
                   Longitude = double.Parse(fields[4]),
                   Timestamp = DateTime.ParseExact(fields[5], "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
                   P1 = double.Parse(fields[6]),
                   P2 = double.Parse(fields[9])
               };
           }
           catch
           {
               return null;
           }
       }
   }

static void Main(string[] args)
       {
           var fileLines = File.ReadLines("D:\\2018-10_sds011\\data.csv").Skip(1);
           var data = fileLines.Select(PMData.FromCsvLine).Where(d => d != null);

           var stats = data.Aggregate(
               new
               {
                   LowestMomentP1 = (DateTime?) null,
                   LowestValueP1 = (double?) null,
                   HighestMomentP1 = (DateTime?) null,
                   HighestValueP1 = (double?) null,
                   LowestMomentP2 = (DateTime?) null,
                   LowestValueP2 = (double?) null,
                   HighestMomentP2 = (DateTime?) null,
                   HighestValueP2 = (double?) null,
                   Count = 0
               },
               (acc, d) => new
               {
                   LowestMomentP1 = !acc.LowestMomentP1.HasValue || acc.LowestValueP1 > d.P1 ? d.Timestamp : acc.LowestMomentP1,
                   LowestValueP1 = !acc.LowestValueP1.HasValue || acc.LowestValueP1 > d.P1 ? d.P1 : acc.LowestValueP1,
                   HighestMomentP1 = !acc.HighestMomentP1.HasValue || acc.HighestValueP1 < d.P1 ? d.Timestamp : acc.HighestMomentP1,
                   HighestValueP1 = !acc.HighestValueP1.HasValue || acc.HighestValueP1 < d.P1 ? d.P1 : acc.HighestValueP1,
                   LowestMomentP2 = !acc.LowestMomentP2.HasValue || acc.LowestValueP2 > d.P2 ? d.Timestamp : acc.LowestMomentP2,
                   LowestValueP2 = !acc.LowestValueP2.HasValue || acc.LowestValueP2 > d.P2 ? d.P2 : acc.LowestValueP2,
                   HighestMomentP2 = !acc.HighestMomentP2.HasValue || acc.HighestValueP2 < d.P2 ? d.Timestamp : acc.HighestMomentP2,
                   HighestValueP2 = !acc.HighestValueP2.HasValue || acc.HighestValueP2 < d.P2 ? d.P2 : acc.HighestValueP2,
                   Count = acc.Count + 1
               });

           Console.WriteLine(stats);
       }


За толкова време - толкова. Има прецакани данни. Агрегацията по часове, дни и седмици, остава за домашно.
PMEmail Poster
Top
SuN
Публикувано на: 13-11-2018, 00:21
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8771
Регистриран на: 27.01.05



Това какво показва? За всички данни или за примерната извадка прави обобщение?

Това мнение е било редактирано от SuN на 13-11-2018, 00:22
PMEmail Poster
Top
sieg
Публикувано на: 13-11-2018, 00:38
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 242
Регистриран на: 22.07.10



QUOTE (SuN @ 13-11-2018, 00:21)
Това какво показва? За всички данни или за примерната извадка прави обобщение?

За всички, в main можеш да видиш пътят до файла.
PMEmail Poster
Top
purjola
Публикувано на: 13-11-2018, 01:16
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2366
Регистриран на: 18.10.11



QUOTE (SuN @ 13-11-2018, 01:10)
Ами чисто човешки погледнато - какво ни грее, че някакъв сензор показва смъртоносно замърсяване в дадена секунда, а в следващата всичко е наред?

За една секунда не може да вземеш никакви мерки, така че или ще си го преживял събитието или ще си умрял и няма проблеми. icon_smile.gif

П.С.

Ако някой не се е светнал още - в България картината от сензорите изглежда горе-долу така: https://airsofia.info/ (ама е неудобно за цъкане на всяко поленце за да се видят числовите стойности).

Има смисъл, когато са няколко сензора на едно място и един от тях показва високи стойности често всяка секунда, докато другите нормални стойности. Бих казал, че трябва да го сменим, нали така?

Това мнение е било редактирано от purjola на 13-11-2018, 01:18
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (19) 1 [2] 3 4 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0