[C#] DataFrame 관련된 실습을 통해 DataFrame과 친해지자

2024. 8. 1. 01:10C#

728x90
반응형

 안녕하세요. 진득 코딩입니다. 이번 시간에는 저번 시간에 간단한 예제로 알게 된 DataFrame을 실습을 통해 좀 더 알아보고 친해져보는 시간을 가져보도록 하겠습니다.

 이번 시간에 하게 될 DataFrame 실습입니다. DataFrame과 ScottPlot를 적절하게 사용하여 fifa.csv 파일에 있는 데이터들을 분석해보도록 하겠습니다.

fiafa.csv 파일 가져오기

 먼저 kaggle이라는 사이트에서 fifa.csv파일을 가져옵니다. 다운로드 표시를 누른 후 구글 로그인을 한 후에 해당 파일을 다운로드해서 사용하시면 됩니다. 해당 사이트의 링크는 밑에 있는 링크를 참조하시기 바랍니다.

https://www.kaggle.com/code/alexisbcook/hello-seaborn/data?select=fifa.csv

 

Hello, Seaborn

Explore and run machine learning code with Kaggle Notebooks | Using data from Interesting Data to Visualize

www.kaggle.com

 다운받은 csv파일을 본인의 workspace에 넣으면 해당 csv 파일을 사용할 준비가 완료됩니다.

DataFrame 사용하기

 전시간에 배웠던 것처럼 polyglot Notebooks를 사용하기 위해 Anlysis 패키지를 가져오고 using해줍니다.

그 이후에 필요한 using을 추가로 해주고 csv파일을 DataFrame에 넣어서 DataFrame을 사용할 준비를 해줍니다.

 DataFrame에 데이터들이 잘 들어왔나 확인하기 위해 DataFrame의 변수를 출력해주면 위와 같이 데이터들이 잘 들어온 것을 확인할 수 있습니다.

전체 기간에서 각 나라의 평균 순위 구하기

 각 나라의 평균을 구하기 위해 Description()을 사용할 수도 있지만 Description()은 다른 데이터들도 함께 나오기 때문에 평균만을 구해주기 위해서 solveMean이라는 메서드를 따로 만들어주었습니다.

 맨 앞에 있는 데이터는 날짜 데이터이기 때문에 해당 데이터는 넘어가주기 위해서 skip(1)을 해주었습니다. foreach문으로 dataFrame에 있는 데이터를 가져와서 Enumerable로 value들을 가져와서 solveMean() 메서드로 평균값을 구해주고 해당 평균값을 출력하면 각 나라의 순위를 출력할 수 있습니다.

2000년의 독일 평균 순위 구하기

 특정 컬럼에 있는 특정 조건의 데이터를 가져올 때는 sql문 처럼 where과 select 구문을 사용해주시면 됩니다. 이렇게 만든 데이터를 list에 넣고 해당 데이터의 평균을 구한 뒤에 double 변수에 넣어줍니다. 이 변수를 출력해주면 독일의 평균 순위가 나오게 됩니다.

아르헨티나와 브라질의 순위 그래프를 한 그래프에 표시

 다음은 그래프를 표시하는 실습이기 때문에 ScottPlot를 사용하기 위해서 ScottPlot 참조와 using을 해주고 default 값을 설정해줍니다.

 브라질과 아르헨티나의 순위를 구하는데 년도별로 구해야하기 때문에 브라질의 순위를 y축, 날짜를 x축으로 하나의 그래프를 그려주고 아르헨티나의 순위를 y축, 날짜를 x축으로 하나의 그래프를 그려줍니다. 각각의 plot를 legendtext에 넣어서 showLegend()로 좌측 하단에 레전드도 넣어주었습니다. 이 상태로 그냥 출력하게 되면 x축이 이상한 숫자들로 나오기 때문에 DateTimeTicksBottom() 메서드를 사용하게 되면 위와 같이 년도가 잘 나오게 됩니다.

2001년 이후 프랑스 순위 그래프와 추세선

 먼저 프랑스의 순위 데이터를 where과 select 구문으로 가져와줍니다.

 2001년 이후에 프랑스의 순위 그래프를 그리기 위해서 where로 2001년 이후로 필터링해주고 select로 날짜를 double로 변환한후에 배열에 넣어서 x축에 넣어서 사용합니다. 또한 위에서 만든 프랑스 순위 데이터를 y축에 넣어줍니다. 추체선은 아래에 있는 쿡북에 있는 코드들을 참고해서 적용해주시면 되고 위와 같이 실선으로 나타내고 싶을 때에는 LinePattern을 solid로 해주시면 됩니다. x축의 데이터들을 년도로 나타내기 위해서 DateTimeTicksBottom()을 해주었습니다.

https://scottplot.net/cookbook/5.0/Regression/Linear/

 

ScottPlot - Interactive Plotting Library for .NET

ScottPlot is a free and open-source plotting library for .NET that makes it easy to interactively display large datasets. Line plots, bar charts, pie graphs, scatter plots, and more can be created with just a few lines of code.

ScottPlot.NET

 


 이번 시간에는 실습을 통해서 DataFrame을 사용해보았습니다. 4가지 되는 실습을 통해 좀더 DataFrame을 잘 다룰 수 있게 된 것 같아서 뿌듯했습니다. 이번 시간은 여기까지입니다. 끝까지 봐주셔서 감사합니다.😀

728x90
반응형
LIST