使用 DataFrame 操作資料

載入 CSV 資料

1
2
3
4
5
6
7
8
#r "nuget: Microsoft.Data.Analysis, 0.21.1"

using System.IO;
using Microsoft.Data.Analysis;

string csvfile = File.ReadAllText("test.csv");
DataFrame df = DataFrame.LoadCsvFromString(csvfile, ',');
Console.WriteLine(df);

輸出:

1
2
3
NAME      
張三
李四

取得前 1 筆

1
2
3
DataFrame headRow = df.Head(1);

Console.WriteLine(headRow);

輸出:

1
2
NAME      
張三

加入新 column

1
2
3
df.Columns.Add(new PrimitiveDataFrameColumn<int>("AGE", new List<int>{1, 1}));

Console.WriteLine(df);

輸出:

1
2
3
NAME      AGE       
張三 1
李四 1

加入新 row

1
2
3
4
5
6
df.Append(new List<KeyValuePair<string, object>>() {
new KeyValuePair<string, object>("NAME", "王五"),
new KeyValuePair<string, object>("AGE", 3)
}, true);

Console.WriteLine(df);

輸出:

1
2
3
4
NAME      AGE       
張三 1
李四 1
王五 3

排序資料

1
2
DataFrame orderByData = df.OrderByDescending("AGE");
Console.WriteLine(orderByData);

輸出:

1
2
3
4
NAME      AGE       
王五 3
李四 1
張三 1

分群資料

1
2
DataFrame groupByData = df.GroupBy("AGE").Count();
Console.WriteLine(groupByData);

輸出:

1
2
3
AGE       NAME      
1 2
3 1

篩選資料

1
2
DataFrame filterData = df.Filter(df.Columns["AGE"].ElementwiseGreaterThan(1));
Console.WriteLine(filterData);

輸出:

1
2
NAME      AGE       
王五 3

合併資料

1
2
3
DataFrame df1 = DataFrame.LoadCsvFromString(csvfile, ',');
DataFrame mergeData = df1.Merge<string>(df, "NAME", "NAME");
Console.WriteLine(mergeData);

輸出:

1
2
3
NAME_left  NAME_right AGE        
張三 張三 1
李四 李四 1

📜 參考資料

  1. DataFrame Class