//suicide attack db public static void Convert_SuicideAttackDb() { string[] attackCategory = new[] { "Attack Date", "Location", "Campaign", "Group", "Weapon", "Target", "Target type", }; // Attack Date, Location, Campaign, Group, Weapon, Target, Target type var dt = new DataTable(); dt.ReadCsv(@"origin\suicide_attack_db_2011-2015.06.csv"); // start, end, label, description var makeDt = new DataTable(); makeDt.SetColumns(Category); // 첫번재 값 제외 foreach (DataRow row in dt.Rows) { var makeRow = makeDt.NewRow(); makeRow[Category[0]] = row[attackCategory[0]]; makeRow[Category[1]] = row[attackCategory[0]]; makeRow[Category[2]] = row[attackCategory[1]]; makeRow[Category[3]] = row[attackCategory[1]]; makeDt.Rows.Add(makeRow); } makeDt.WriteCsv(@"visual\visual_suicde_attack_db.csv"); }
public static void Convert_peace() { // 시작 날짜,종료 날짜,사건 이름,설명,지역,위도,경도,행정구역,Refenence Link,올린사람,비고 var dt = new DataTable(); dt.ReadCsv(@"origin\peace.csv"); // start, end, label, description var makeDt = new DataTable(); makeDt.SetColumns(Category); // 첫번재 값 제외 foreach (DataRow row in dt.Rows) { var makeRow = makeDt.NewRow(); makeRow[Category[0]] = row[0]; makeRow[Category[1]] = row[0]; makeRow[Category[2]] = row[2]; makeRow[Category[3]] = row[3]; makeDt.Rows.Add(makeRow); } makeDt.WriteCsv(@"visual\visual_peace.csv"); }
public static void Converter_Classify() { var orgin = new DataTable(); orgin.ReadCsv(@"visual\Martyrs3.csv"); // 매 달마다 사망자수 var deathClassfy = orgin.AsEnumerable().GroupBy(q => q[4]); List<string> deathListh = new List<string>(); Console.WriteLine("Classfy Death"); foreach (var death in deathClassfy) { Console.WriteLine($"Area.Key : {death.Key}, Area.Count : {death.Count()}"); deathListh.Add(death.Key.ToString()); } string str = String.Empty; foreach (var death in deathListh) { str += death + ","; } Console.WriteLine($"Total : {orgin.Rows.Count}"); Console.WriteLine($"Classify Count : {deathClassfy.Count()}"); Console.WriteLine("end"); var makeDt = new DataTable(); makeDt.SetColumns(Category); //start: 해당 달에 밝혀진 사망자 수 //label : 전체 사망자 수 //description : 전체 사망자 수 // 월별로 정리 // 모든 Day를 1로 정의 foreach (DataRow row in orgin.Rows) { try { DateTime date = Convert.ToDateTime(row[6]); // .ToString("yyyy-MM-dd") var day = date.Day; if (day > 1) { var sub = 1 - day; date = date.AddDays(sub); } row[6] = date.ToString("yyyy-MM-dd"); } catch (Exception) { } } //orgin.WriteCsv(@"visual\Martyrs5.csv"); Debug.WriteLine("end"); // groupby를 통하 합침. // 이를 날짜별로 정리 var dateClassfy = orgin.AsEnumerable().GroupBy(q => q[6]).OrderBy(q => q.Key); //foreach (var dateData in dateClassfy) //{ // var deathClassify = dateData.GroupBy(q => q[7]); //} // 사망 지역 var makeDt3 = new DataTable(); makeDt3.SetColumns(new string[] { "date", "total_count", "Hama", "Damascus Suburbs","Damascus", "Daraa","Deir Ezzor", "Idlib", "Aleppo", "Homs", "Lattakia", "Quneitra", "Other", "Hasakeh", "Raqqa", "Tartous", "Sweida" }); foreach (var dateData in dateClassfy) { var row = makeDt3.NewRow(); row[0] = dateData.Key; row[1] = dateData.Count(); var deathClassify = dateData.GroupBy(q => q[4]); foreach (var classify in deathClassify) { string name = classify.Key.ToString(); if (String.IsNullOrEmpty(name) == false) { if (String.IsNullOrEmpty(name)) { } else { int rowCount = 0; int.TryParse(row[name] as string, out rowCount); row[name] = rowCount + classify.Count(); } } } makeDt3.Rows.Add(row); } makeDt3.WriteCsv(@"visual\MartyrsProvince.csv"); // 사망자 원인 var makeDt2 = new DataTable(); makeDt2.SetColumns(new string[] { "date", "total_count", "Shooting", //"Warplane shelling", //"Detention - Torture", //"Kidnapping - Execution", "Shelling", "Other", "Field Execution", "Explosion", //"Detention - Execution", //"Detention - Torture - Execution", //"Kidnapping - Torture", "Un-allowed to seek Medical help", //"Kidnapping - Torture - Execution", "Chemical and toxic gases", "Kidnapping-Detention", }); // 월별 사망자수 foreach (var dateData in dateClassfy) { var row = makeDt2.NewRow(); row[0] = dateData.Key; row[1] = dateData.Count(); var deathClassify = dateData.GroupBy(q => q[7]); foreach (var classify in deathClassify) { string name = classify.Key.ToString(); if (String.IsNullOrEmpty(name) == false) { if (name == "Warplane shelling") name = "Shelling"; if (name.Contains("Kidnapping")) name = "Kidnapping-Detention"; if (name.Contains("Detention")) name = "Kidnapping-Detention"; int rowCount = 0; int.TryParse(row[name] as string, out rowCount); row[name] = rowCount + classify.Count(); } } makeDt2.Rows.Add(row); } makeDt2.WriteCsv(@"visual\MartyrsDeathCount.csv"); // 월별 사망자 누적수 makeDt2.Rows.Clear(); int count = 0; foreach (var dateData in dateClassfy) { var row = makeDt2.NewRow(); row[0] = dateData.Key; count += dateData.Count(); row[1] = count; makeDt2.Rows.Add(row); } makeDt2.WriteCsv(@"visual\MartyrsDeathCount2.csv"); Debug.WriteLine("end"); }
public static void Convert_MartyrsAnalysis() { var originDt = new DataTable(); originDt.ReadXml(@"origin\Martyrs.xml"); DataTable dt2 = new DataTable(); string[] sortedCategory = new[] { "Name", "Status", "Adult", "Sex", "Province", "Area", "Date of death", "Cause of Death" }; int sortedCound = 0; dt2.SetColumns(sortedCategory); foreach (DataRow row in originDt.Rows) { // 첫번재 값은 제외 sortedCound++; if (sortedCound == 1) continue; var dt2Row = dt2.NewRow(); foreach (var cateName in sortedCategory) { if (cateName != "Adult" && cateName != "Sex") { dt2Row[cateName] = row[cateName]; } else { var str = row["Sex"] as string; if (str == null) break; if (str.Contains("Adult")) { dt2Row["Adult"] = "Adult"; } else if (str.Contains("Child")) { dt2Row["Adult"] = "Child"; } else { } if (str.Contains("Male")) { dt2Row["Sex"] = "Male"; } else if (str.Contains("Female")) { dt2Row["Sex"] = "Female"; } else { } } } dt2.Rows.Add(dt2Row); } dt2.WriteCsv(@"visual\Martyrs.csv"); }
public static void Convert_Martyrs() { var orgin = new DataTable(); orgin.ReadCsv(@"visual\Martyrs3.csv"); //var deathClassfy = orgin.AsEnumerable().GroupBy(q => q[7]); //Console.WriteLine("Classfy Death"); //foreach (var death in deathClassfy) //{ // Console.WriteLine($"death.Key : {death.Key}, death.Count : {death.Count()}"); //} //Console.WriteLine($"Total : {orgin.Rows.Count}"); //Console.WriteLine("end"); // start, end, label, description var makeDt = new DataTable(); makeDt.SetColumns(Category); //start: 해당 달에 밝혀진 사망자 수 //label : 전체 사망자 수 //description : 전체 사망자 수 // 월별로 정리 // 모든 Day를 1로 정의 foreach (DataRow row in orgin.Rows) { try { DateTime date = Convert.ToDateTime(row[6]); // .ToString("yyyy-MM-dd") var day = date.Day; if (day > 1) { var sub = 1 - day; date = date.AddDays(sub); } row[6] = date.ToString("yyyy-MM-dd"); } catch (Exception) { } } orgin.WriteCsv(@"visual\Martyrs5.csv"); Debug.WriteLine("end"); // groupby를 통하 합침. // 이를 날짜별로 정리 var dateClassfy = orgin.AsEnumerable().GroupBy(q => q[6]).OrderBy(q => q.Key); var makeDt2 = new DataTable(); makeDt2.SetColumns(new string[] { "date", "num" }); // 월별 사망자수 foreach (var dateData in dateClassfy) { var row = makeDt2.NewRow(); row[0] = dateData.Key; row[1] = dateData.Count(); makeDt2.Rows.Add(row); } makeDt2.WriteCsv(@"visual\MartyrsCount.csv"); // 월별 사망자 누적수 makeDt2.Rows.Clear(); int count = 0; foreach (var dateData in dateClassfy) { var row = makeDt2.NewRow(); row[0] = dateData.Key; count += dateData.Count(); row[1] = count; makeDt2.Rows.Add(row); } makeDt2.WriteCsv(@"visual\MartyrsCount2.csv"); Debug.WriteLine("end"); }