본문 바로가기
여러 가지 이야기/잡다한 이야기

코딩 질문을 하실 때는 '무조건' sample을 만들어 질문하세요!

by 김판다t 2023. 8. 17.

코딩으로 데이터를 다루는 분들이 절대 가지면 안되는 나쁜 습관은

코딩으로 구현하고 싶은 작업을 말이나 글로만 설명하려고 하는 것입니다.

 

샘플을 만들지 않고 말이나 글로만 설명하는 것이죠.

이건 명확하지 않아 의사소통도 안될 뿐더러

나아가 코딩을 잘 해나갈 수 있는 여러분을 코딩 못하는 사람으로 만드는 습관입니다.

왜냐하면 코딩의 핵심은 문제 해결이고, 문제 해결을 위해  테스트 샘플을 만들어 코드를 점검하는 것은 필수입니다.

그렇지만 말로 데이터를 설명하는 습관이 생기면 문제 해결을 위해 필수인 테스트 코드를 만들 수 없게 됩니다.

 

지금은 초보라서 샘플을 만들지 않지만, 코딩이 익숙해지면 샘플을 만들 거라고 생각하실 수 있습니다.

샘플을 만드는 것은 습관이고, 코딩 실력과 전혀 관계가 없기 때문에 처음 배울 때 못하는 건 나중에는 더 못합니다.

실력에 관계없이 성실함으로 수행할 수 있는 기본기는 초보 때 배워야 합니다.

실력이 쌓이면 오히려 성실함이 필요한 기본기를 스킵하려고 하지,  초보 때 못 익힌 기본기를 연마하지 않습니다.

 

 

결국 코딩을 잘하기 위해서는 샘플을 만드는 것이 지금 습관화가 되셔야 합니다.

 

 

코딩 질문을 하실 때도 무조건 샘플을 만들어 질문하세요!

 

 

질문하실 때도 샘플을 만드는 것은 중요합니다.

여러분이 말이나 글로만 설명하는 질문은 대부분 아래와 같습니다.

예시질문) 조건에 따라 서로 다른 값으로 NaN을 채우는 방법은 무엇입니까?

 

NaN은 값이 없는 것을 뜻하는 null입니다. 판다스에서 다루는 null은 주로 NaN이에요.

위 질문정도만 되어도 데이터를 말로 설명해 질문한 것 치고는 굉장히 높은 수준의 질문입니다.

그럼에도 여러분도 이 질문이 정확히 무엇을 의도하는 질문인지 파악하기 어려우실 겁니다.

무슨 조건이냐에 따라 천차 만별일 것 같은데 일괄적으로 말하기도 어렵죠.

사실 질문자 본인도 본인의 질문을 2달 뒤에 보면 정확히 무엇을 의도했는지 알기 어려울 겁니다.

 

이런 질문은

1. 무엇을 원하는지 명확히 파악할 수 없으며,

2. 조건에 따라 서로 다른 값으로 NaN을 채운다는 것은 굉장히 넓은 범주의 것이라 무엇을 원하는지 특정할 수 없고

(너무나 많은 행위를 조건에 따라 서로 다른 값으로 NaN을 채운다고 표현할 수 있다는 것입니다)

3. 데이터가 조금만 달라지거나 원하는 결과가 조금만 달라져도 해결 방법이 크게 달라지기에

 

답변할 수 없는 질문이 됩니다.

 

 

 

하지만 걱정 마세요!
반대로 여러분이 sample을 만드는 습관만 가지시면 질문도 명확하게 하실 수 있고
코딩에도 쉽게 적응하실 수 있습니다!

 

 

 

 

 

 

어떤가요?

샘플을 만들어 질문하니 확실히 질문이 비약적으로 명확해졌죠?

정확히 특정하기 어려웠던 "조건에 따라 서로 다른 값으로 NaN을 채운다"는 작업을 특정하게 되었습니다.

당연히 특정가능하고 명확하게 되었고, 해당 데이터도 제공이 되었으니 답변받을 수 있는 질문이 됩니다!

 

명확하지 않아서 답변할 수 없었던 질문이
샘플 하나로 명확하고 답변이 가능한 질문이 되었다는 것을 여러분도 느끼셨을 겁니다

 

 

 

앞으로 여러분이 코딩으로 구현하고 싶은 작업의 설명은 반드시 샘플을 만들어 설명하세요.

샘플로 데이터를 설명하면 말로 설명할 때와 달리 질문자의 의도를 정확히 파악할 수 있습니다.

 

그뿐이 아닙니다

코딩의 본질은 문제해결이고요. 

문제가 생기면 샘플코드를 만들어서 나의 코드를 적용해 해결의 실마리를 잡으셔야 합니다

대부분의 문제 해결은 샘플코드를 만들어 내가 쓴 코드를 테스트 하면서 해결 실마리를 얻게 됩니다.

(그래서 샘플을 만들지 않고  말과 글로 소통하려는 습관은 문제해결 능력을 하락시키는 가장 나쁜 습관입니다)

 

요약하면 샘플을 만드는 습관은 질문을 명확하게 할 뿐 아니라, 코딩실력을 키우기 가장 좋은 방법입니다

 

 

 

 

혼자서 샘플을 만들어 질문하는 것이 막막하시면 아래 안내에 따라 차근차근 sample을 만드세요!

 

 

처음이기에 혼자서 샘플을 만드는 것을 시도하는 것이 막막하실 수 있습니다.

그런 분들은 아래 안내를 따라 천천히 하나씩 해보시면 쉽게 좋은 질문을 만드실 수 있습니다

아래 안내에 따라 질문을 작성하시고 추가로 저에게 질문하실 분은 pandakimt@gmail.com으로 보내주세요.


 

sample을 만들어 질문하는 과정 안내

 

엑셀을 켜고 본인 상황(조건에 따라 다른 값으로 NaN을 채운다는 것)을 설명하기 좋은 예(sample)를 표로 만듭니다

sample을 만들고 그 sample을 어떻게 바꾸기를 원하는지 본인이 원하는 결과(desired output)을 만듭니다.

sample은 당연히 간단한 예로 만드시면 됩니다. (그게 질문자에게도 만들기 편하고 답변자에게도 편합니다)

엑셀이 없다면 구글시트 같은 웹에서 제공하는 엑셀을 활용하세요 (구글시트 링크)

그것도 힘드시면 메모장으로 텍스트로 표를 만드시면 됩니다

 

 

조건에 따라 특정 열의 값에 따라 다르게 NaN을 채우는 sample을 만들었습니다.

제품열의 값에 따라 판매량의 NaN을 채우는데 제품이 A라면 NaN을 60으로 채우고, 제품이 B라면 NaN을 50으로 채우고 제품이 C라면 NaN을 70으로 채우는 sample을 만들었습니다.

 

 

 

여기서 끝이 아닙니다.

반드시 sample과 desired output은 복사가능한 text로 제공해야 합니다.

답변자는 여러분의 input을 데이터 프레임으로 만들어 실행해보기 때문에 반드시 복사가능한 text로 제공하세요! 

엑셀에서 표를 복사해서 붙여넣기를 합니다.

 

 

	제품	판매량
0	A	10
1	B	NaN
2	B	30
3	A	NaN
4	C	NaN
5	A	NaN

input : df

 

input인 표를 복사해 텍스트를 붙여 넣을 수 있는 곳에 붙여 넣어 텍스트로 제공합니다

output도 마찬가지로 복사해 붙여넣기 합니다.

엑셀을 이용하지 않으셨다면 메모장을 이용해 텍스트로 위와 같은 표를 바로 만드시면 됩니다!

 

 

	제품	판매량
0	A	10
1	B	50
2	B	30
3	A	60
4	C	70
5	A	60

desired output

 

 

 

이걸 이용해서 질문하면 명확한 질문을 할 수 있고, 당연히 명확하기에 답변받을 수도 있습니다.

경우에 따라서는 추가적으로 엑셀에 그린 표를 스샷으로 첨부하면 더욱 간편하게 이해가 가능하고 해결도 가능합니다

(스샷만 제공하시는 것은 안됩니다! 반드시 복사가 가능한 text는 기본적으로 제공하셔야 합니다!)

 

 

이렇게 되면 질문이 아래와 같이 완성됩니다.

아래 질문 예시를 그대로 복사해서 예)부분을 삭제하시고 여러분에게 맞게 내용을 고쳐 질문하시면 됩니다

안내에 따라 작성된 질문을 저에게 질문하실 분은 pandakimt@gmail.com으로 보내주세요.

 

 

 


sample을 활용한 질문 예시

 

제목 :

 

예) 조건에 따라 서로 다른 값으로 NaN을 채우는 방법은 무엇입니까?

 

 

1. input (둘 이상의 input이 있다면 모두 작성해주세요.  반드시 복사가 가능한 text로 제공하셔야 합니다! )

 

예) input인 df입니다

 

	제품	판매량
0	A	10
1	B	NaN
2	B	30
3	A	NaN
4	C	NaN
5	A	NaN

 

 

2. 원하는 결과(desired output)

 

예)

 

	제품	판매량
0	A	10
1	B	50
2	B	30
3	A	60
4	C	70
5	A	60

 

3. 설명

 

예)

desired output과 같이 제품이 A라면 NaN을 60으로 채우고, 제품이 B라면 NaN을 50으로 채우고 제품이 C라면 NaN을 70으로 채우는 코드는 무엇입니까?

 

 

4. 추가적인 자료 (스샷은 추가제공이니까 제공하지 않으셔도 됩니다)

 

예)

 

 

위의 질문 예시를 그대로 복사하셔서 예 부분을 지우시고 여러분에게 맞게 고쳐 질문해주세요

안내에 따라 작성된 질문을 저에게 질문하실 분은 pandakimt@gmail.com으로 보내주세요.

예의 경우 아래와 같이 답변이 나갑니다

 

 

답변

 

import pandas as pd
df = pd.DataFrame({"제품": ["A", "B", "B", "A", "C", "A"], 
                   "판매량": [10, None, 30, None, None, None]})

m = {'A': 60, 'B': 50, 'C': 70}
df['판매량'] = df['판매량'].fillna(df['제품'].map(m)).astype('int')

 

결과

 

 

text로 input이 제공되었기에 복사해 데이터 프레임으로 만들어 정확한 코드를 쉽게 답변하기 쉽습니다

결과를 보시면 제품이 A라면 NaN을 60으로 채우고, 제품이 B라면 NaN을 50으로 채우고 제품이 C라면 NaN을 70으로 채웠습니다

 


 

여러분이 보시기엔 어떠신가요?

여러분이 이 질문을 처음 보았을 때와 달리 보정된 질문을 보니 여러분도 질문자가 어떤 것을 원하는지 알 수 있으시겠죠?

당연히 그러실 겁니다.

여러분이 봐도 처음에는 답변할 수 없는 질문이었는데, 답변할 수 있는 질문이 되었다고 느끼실겁니다.

 

sample을 만드는 것이 코딩을 잘 알아야 할 수 있는 것이 아니기에 코딩 초보분들도 만드실 수 있습니다!

그리고 여러분이 질문을 하지 않더라도 코딩으로 데이터를 다룬다는 것은 sample을 만드는 과정의 연속입니다.

그래서 이 습관은 여러분을 코딩초보에서 코딩 고인물로 만들어 줄 가장 확실한 습관입니다!

 

여러분의 코딩실력 향상을 위해 이제부터라도 sample을 만들어 보세요!

 

 

 

안내에 따라 작성된 질문을 저에게 질문하실 분은 pandakimt@gmail.com으로 보내주세요.

 

 

 

 

 

 

 

 

 

유튜브에서 판다스 강의 중입니다

 

https://www.youtube.com/@KimPandas