Перенес примеры в папку MachineLearning верхнего уровня

This commit is contained in:
Mikhalkovich Stanislav 2026-02-11 14:26:05 +03:00
parent d8c0645ac0
commit 4dc3470dbb
23 changed files with 351 additions and 0 deletions

View file

@ -0,0 +1,13 @@
// Загрузка и просмотр данных
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.Print;
end.

View file

@ -0,0 +1,7 @@
// Загрузка данных из CSV-файла
uses DataFrameABC;
begin
var df := DataFrame.FromCsv('people.csv');
df.Print;
end.

View file

@ -0,0 +1,13 @@
// Выбор столбцов (Select)
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.Select(['name', 'score']).Print;
end.

View file

@ -0,0 +1,13 @@
// Переименование столбцов (Rename)
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.Rename('score', 'exam_score').Print;
end.

View file

@ -0,0 +1,13 @@
// Удаление столбцов (Drop)
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.Drop(['score']).Print;
end.

View file

@ -0,0 +1,13 @@
// Простая фильтрация
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.Filter(row -> row.Int('age') >= 21).Print;
end.

View file

@ -0,0 +1,16 @@
// Фильтрация с NA
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.Filter(row -> row.IsValid('score')).Print;
end.

View file

@ -0,0 +1,16 @@
// Новый числовой столбец
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.WithColumnBool('passed', row -> row.Int('score') >= 80).Print;
end.

View file

@ -0,0 +1,16 @@
// Обработка ошибок (NA)
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.WithColumnFloat('normalized', row -> row.Float('score') / 100).Print;
end.

View file

@ -0,0 +1,18 @@
// Простые статистики
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.Min('score').Println;
df.Mean('score').Println;
df.Max('score').Println;
end.

View file

@ -0,0 +1,17 @@
// Describe одного столбца
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
var d := df.Describe('score');
Print(d.Count,d.Min,d.Max,d.Mean,d.Std);
end.

View file

@ -0,0 +1,16 @@
// Describe всех числовых столбцов
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.Describe.PrintLines;
end.

View file

@ -0,0 +1,16 @@
// GroupBy + Count
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.GroupBy('age').Count.Print;
end.

View file

@ -0,0 +1,16 @@
// GroupBy + Mean
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.GroupBy('age').Mean('score').Print;
end.

View file

@ -0,0 +1,16 @@
// GroupBy + Describe
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.GroupBy('age').Describe('score').Print;
end.

View file

@ -0,0 +1,20 @@
// Inner Join
uses DataFrameABC;
begin
var students := DataFrame.FromCsvText('''
id,name
1,Alice
2,Bob
3,Charlie
''');
var scores := DataFrame.FromCsvText('''
id,score
1,85
2,90
4,70
''');
students.Join(scores, 'id').Print;
end.

View file

@ -0,0 +1,20 @@
// Left Join
uses DataFrameABC;
begin
var students := DataFrame.FromCsvText('''
id,name
1,Alice
2,Bob
3,Charlie
''');
var scores := DataFrame.FromCsvText('''
id,score
1,85
2,90
4,70
''');
students.Join(scores, 'id', jkLeft).Print;
end.

View file

@ -0,0 +1,20 @@
// Full Join
uses DataFrameABC;
begin
var students := DataFrame.FromCsvText('''
id,name
1,Alice
2,Bob
3,Charlie
''');
var scores := DataFrame.FromCsvText('''
id,score
1,85
2,90
4,70
''');
students.Join(scores, 'id', jkFull).Print;
end.

View file

@ -0,0 +1,13 @@
// Сортировка
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
''');
df.SortBy('score', descending := True).Print;
end.

View file

@ -0,0 +1,16 @@
// Просмотр больших данных
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.PrintPreview(3);
end.

View file

@ -0,0 +1,21 @@
// Полный аналитический сценарий
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df
.Filter(r -> r.IsValid('score'))
.SortBy('age', descending := True)
.GroupBy('age')
.Mean('score')
.PrintPreview(3);
end.

View file

@ -0,0 +1,18 @@
// Сортировка по нескольким полям
uses DataFrameABC;
begin
var df := DataFrame.FromCsvText('''
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
Bob,22,90
Clara,,78
Kat,21,NA
''');
df.Filter(r -> r.IsValid('score'))
.SortBy(['age','score'],[True,True])
.Println;
end.

View file

@ -0,0 +1,4 @@
name,age,score
Alice,20,85
Bob,22,90
Charlie,21,78
1 name age score
2 Alice 20 85
3 Bob 22 90
4 Charlie 21 78