데이터 과학을위한 파이썬 (무료 7 일 미니 코스)

데이터 과학을위한 파이썬 (무료 7 일 미니 코스)

데이터 과학을위한 파이썬 (무료 7 일 미니 코스)데이터 과학을위한 파이썬 (무료 7 일 미니 코스)
편집자에 의한 이미지 | chatgpt

소개

오신 것을 환영합니다 무료 7 일 미니 코스 인 데이터 과학을위한 파이썬 초보자를 위해! 데이터 과학으로 시작하거나 기본적인 파이썬 기술을 배우고 싶다면이 초보자 친화적 인 과정이 귀하를위한 것입니다. 다음 7 일 동안 코어 파이썬 만 사용하여 데이터 작업을 수행하는 방법을 배웁니다.

당신은 다음과 같은 방법을 배웁니다.

  • 기본 파이썬 데이터 구조로 작업하십시오
  • 지저분한 텍스트 데이터를 청소하고 준비하십시오
  • 사전과 함께 요약 및 그룹 데이터 (SQL 또는 Excel에서하는 것처럼)
  • 코드를 깔끔하고 효율적으로 유지하는 재사용 가능한 기능을 작성하십시오.
  • 스크립트가 지저분한 입력 데이터에 충돌하지 않도록 오류를 우아하게 처리합니다.
  • 마지막으로 CSV 데이터 세트를 검사하기위한 간단한 데이터 프로파일 링 도구를 구축합니다.

시작합시다!

🔗 Github의 코드 링크

1 일차 : 변수, 데이터 유형 및 파일 I/O

데이터 과학에서는 모든 것이 원시 데이터로 시작됩니다 : 설문 조사 응답, 로그, 스프레드 시트, 양식, 스크래그 웹 사이트 등.

  • 데이터를로드하십시오
  • 모양과 유형을 이해하십시오
  • 청소하거나 검사하기 시작합니다

오늘은 배울 것입니다 :

  • 기본 파이썬 데이터 유형
  • raw .txt 파일을 읽고 쓰는 방법

// 1. 변수

파이썬에서 변수는 값에 대한 명명 된 참조입니다. 데이터 용어로는 필드, 열 또는 메타 데이터로 생각할 수 있습니다.

filename = "responses.txt"
survey_name = "Q3 Customer Feedback"
max_entries = 100

// 2. 데이터 유형 자주 사용할 수 있습니다

아직 모호한 유형에 대해 걱정하지 마십시오. 주로 다음을 사용할 것입니다.

파이썬 유형 그것이 사용되는 것
str 원시 텍스트, 열 이름 “나이”, “알 수없는”
int 카운트, 이산 변수 42, 0, -3
뜨다 연속 변수 3.14, 0.0, -100.5
깃발 / 이진 결과 사실, 거짓
없음 누락/널 값 없음

각각을 다루는시기와 확인 또는 변환 방법을 아는 것은 데이터 정리의 단계 제로입니다.

// 3. 파일 입력 : 원시 데이터 읽기

대부분의 실제 데이터는 .txt, .csv 또는 .log 파일에 있습니다. 종종 한 번에 한 번에 라인별로로드해야합니다 (특히 큰 경우).

파일이 있다고 가정 해 봅시다 responses.txt:

읽은 방법은 다음과 같습니다.

with open("responses.txt", "r") as file:
    lines = file.readlines()

for i, line in enumerate(lines):
    cleaned = line.strip()  # removes \n and spaces
    print(f"{i + 1}: {cleaned}")

산출:

1: Yes
2: No
3: Yes
4: Maybe
5: No

// 4. 파일 출력 : 처리 된 데이터 작성

새 파일에 “예”응답 만 저장하고 싶다고 가정 해 봅시다.

with open("responses.txt", "r") as infile:
    lines = infile.readlines()

yes_responses = []

for line in lines:
    if line.strip().lower() == "yes":
        yes_responses.append(line.strip())

with open("yes_only.txt", "w") as outfile:
    for item in yes_responses:
        outfile.write(item + "\n")

이것은 데이터 전처리에 매일 사용되는 개념 인 필터 변환 사원 파이프 라인의 매우 간단한 버전입니다.

// ⏭️ 연습 : 첫 번째 데이터 스크립트를 작성하십시오

호출 된 파일을 만듭니다 survey.txt 다음 줄에서 복사하십시오.

이제 파이썬 스크립트를 작성하십시오.

  1. 파일을 읽습니다
  2. “예”가 나타나는 횟수를 계산합니다 (사례에 민감하지 않음). 나중에 텍스트에서 문자열로 작업하는 법을 배웁니다. 그러나 그것을 줘!
  3. 카운트를 인쇄합니다
  4. 깨끗한 버전의 데이터 (대문자, 공백 없음)를 cleaned_survey.txt

2 일차 : 기본 파이썬 데이터 구조

데이터 과학은 데이터를 정리, 분석 또는 모델링 할 수 있도록 데이터를 구성하고 구성하는 것입니다. 오늘은 코어 파이썬의 네 가지 필수 데이터 구조와 실제 데이터 작업에 사용하는 방법을 배웁니다.

  • 목록 : 행의 시퀀스 용
  • 튜플 : 고정 위치 기록 용
  • DICT : 라벨이 붙은 데이터 (예 : 열)
  • 세트 : 고유 한 값을 추적하기 위해

// 1. 목록 : 데이터 행 순서의 경우

목록은 가장 유연하고 일반적인 구조이며 다음을 나타내는 데 적합합니다.

  • 값의 열
  • 레코드 모음
  • 크기가 알려지지 않은 데이터 세트

예 : 파일에서 목록으로 값을 읽습니다.

with open("scores.txt", "r") as file:
    scores = [float(line.strip()) for line in file]

print(scores)

이 인쇄물 :

당신은 지금 할 수 있습니다 :

average = sum(scores) / len(scores)
print(f"Average score: {average:.2f}")

산출:

// 2. 튜플 : 고정 구조 레코드의 경우

튜플은 목록과 비슷하지만, 알려진 구조 (예 : 이름, 나이)가있는 행에 가장 불변이며 가장 잘 사용됩니다.

예 : 이름과 연령의 파일을 읽으십시오.
우리가 다음을 가지고 있다고 가정합니다 people.txt:

Alice, 34
Bob, 29
Eve, 41

이제 파일의 내용을 읽어 보겠습니다.

with open("people.txt", "r") as file:
    records = []
    for line in file:
        name, age = line.strip().split(",")
        records.append((name.strip(), int(age.strip())))

이제 위치별로 필드에 액세스 할 수 있습니다.

for person in records:
    name, age = person
    if age > 30:
        print(f"{name} is over 30.")

// 3. DICT : 라벨이 붙은 데이터 (예 : 열)

사전은 키 값 쌍을 저장합니다. 코어 파이썬에서 가장 가까운 것은 열이있는 테이블 행입니다.

예 : 각 사람의 레코드를 DICT로 변환합니다.

people = []

with open("people.txt", "r") as file:
    for line in file:
        name, age = line.strip().split(",")
        person = {
            "name": name.strip(),
            "age": int(age.strip())
        }
        people.append(person)

이제 데이터는 훨씬 더 읽기 쉽고 유연합니다.

for person in people:
    if person["age"] 

// 4. 세트 : 독창성 및 빠른 회원 수표 용

세트는 자동으로 복제를 제거합니다. 세트는 다음에 좋습니다.

  • 고유 한 카테고리 계산
  • 이전에 값이 보였는지 확인합니다
  • 순서없이 별개의 값을 추적합니다

예 : 이메일 파일에서 모든 고유 도메인을 찾으십시오.

domains = set()

with open("emails.txt", "r") as file:
    for line in file:
        email = line.strip().lower()
        if "@" in email:
            domain = email.split("@")[1]
            domains.add(domain)

print(domains) 

산출:

{'gmail.com', 'yahoo.com', 'example.org'}

// ⏭️ 연습 : 미니 데이터 검사관을 코딩하십시오

호출 된 파일을 만듭니다 dataset.txt 다음 내용으로 :

이제 파이썬 스크립트를 작성하십시오.

  1. 각 선을 읽고 키가있는 사전으로 저장합니다 : 이름, 나이, 역할
  2. 각 역할에 얼마나 많은 사람들이 있는지 (사전 사용) 고유 한 연령의 수 (세트 사용).

3 일차 : 현으로 작업합니다

텍스트 문자열은 대부분의 실제 데이터 세트 (설문 조사 응답, 사용자 바이오스, 직무, 제품 검토, 이메일 등)의 모든 곳에 있지만 일관성이없고 예측할 수 없습니다.

오늘은 다음을 배웁니다.

  • 원시 텍스트를 청소하고 표준화합니다
  • 문자열에서 정보를 추출하십시오
  • 간단한 텍스트 기반 기능 구축 (필터링 또는 모델링에 사용할 수있는 종류)

// 1. 기본 문자열 청소

CSV 에서이 직책 목록을 얻는다 고 가정 해 봅시다.

titles = [
    "  Data Scientist\n",
    "data scientist",
    "Senior Data Scientist ",
    "DATA scientist",
    "Data engineer",
    "Data Scientist"
]

당신의 직업? 정상화하십시오.

cleaned = [title.strip().lower() for title in titles]

이제 모든 것이 소문자와 공백이 없습니다.

산출:

['data scientist', 'data scientist', 'senior data scientist', 'data scientist', 'data engineer', 'data scientist']

// 2. 값 표준화

데이터 과학자를 식별하는 데 관심이 있다고 가정 해 봅시다.

standardized = []

for title in cleaned:
    if "data scientist" in title:
        standardized.append("data scientist")
    else:
        standardized.append(title)

// 3. 단어 계산, 패턴 확인

유용한 텍스트 기능 :

  • 단어 수
  • 문자열에 키워드가 포함되어 있는지 여부
  • 문자열이 숫자인지 이메일인지 여부

예:

text = " The price is $5,000!  "

# Clean up
clean = text.strip().lower().replace("$", "").replace(",", "").replace("!", "")
print(clean)  

# Word count
word_count = len(clean.split())

# Contains digit
has_number = any(char.isdigit() for char in clean)

print(word_count)
print(has_number)

산출:

"the price is 5000"
4
True

// 4. 부품 분할 및 추출

이메일 예를 들어 보겠습니다.

email = "  [email protected]  "
email = email.strip().lower()

username, domain = email.split("@")

print(f"User: {username}, Domain: {domain}")

이 인쇄물 :

User: alice.johnson, Domain: example.com

이러한 종류의 추출은 사용자 행동 분석, 스팸 탐지 등에 사용됩니다.

// 5. 특정 텍스트 패턴 감지

기본 패턴 검사를위한 정기적 인 표현이 필요하지 않습니다.

예 : 누군가가 자유 텍스트 응답에서 “Python”을 언급했는지 확인하십시오.

comment = "I'm learning Python and SQL for data jobs."

if "python" in comment.lower():
    print("Mentioned Python")

// ⏭️ 운동 : 설문 조사 의견을 깨끗하게하십시오

호출 된 파일을 만듭니다 comments.txt 다음 줄로 :

Great course! Loved the pacing.
Not enough Python examples.
Too basic for experienced users.
python is exactly what I needed!
Would like more SQL content.
Excellent – very beginner-friendly.

이제 파이썬 스크립트를 작성하십시오.

  1. 각 주석을 청소합니다 (스트립, 소문자, 구두점 제거)
  2. 총 댓글 수, “Python”수, 댓글 당 평균 단어 수를 인쇄합니다.

4 일차 : 그룹, 카운트, 사전으로 요약합니다

Dick을 사용하여 표시된 레코드를 저장했습니다. 오늘은 사전을 사용하여 SQL의 피벗 테이블이나 그룹처럼 데이터를 그룹화, 계산 및 요약합니다.

// 1. 필드 별 그룹화

이 데이터가 있다고 가정 해 봅시다.

data = [
    {"name": "Alice", "city": "London"},
    {"name": "Bob", "city": "Paris"},
    {"name": "Eve", "city": "London"},
    {"name": "John", "city": "New York"},
    {"name": "Dana", "city": "Paris"},
]

목표 : 각 도시에 얼마나 많은 사람들이 있는지 계산하십시오.

city_counts = {}

for person in data:
    city = person["city"]
    if city not in city_counts:
        city_counts[city] = 1
    else:
        city_counts[city] += 1

print(city_counts)

산출:

{'London': 2, 'Paris': 2, 'New York': 1}

// 2. 카테고리 별 필드 합산

이제 우리가 가지고 있다고 가정 해 봅시다.

salaries = [
    {"role": "Engineer", "salary": 75000},
    {"role": "Analyst", "salary": 62000},
    {"role": "Engineer", "salary": 80000},
    {"role": "Manager", "salary": 95000},
    {"role": "Analyst", "salary": 64000},
]

목표 : 역할 당 총 및 평균 급여를 계산합니다.

totals = {}
counts = {}

for person in salaries:
    role = person["role"]
    salary = person["salary"]
    
    totals[role] = totals.get(role, 0) + salary
    counts[role] = counts.get(role, 0) + 1

averages = {role: totals[role] / counts[role] for role in totals}

print(averages)

산출:

{'Engineer': 77500.0, 'Analyst': 63000.0, 'Manager': 95000.0}

// 3. 주파수 테이블 (모드 감지)

데이터 세트에서 가장 흔한 연령을 찾으십시오.

ages = [29, 34, 29, 41, 34, 29]

freq = {}

for age in ages:
    freq[age] = freq.get(age, 0) + 1

most_common = max(freq.items(), key=lambda x: x[1])

print(f"Most common age: {most_common[0]} (appears {most_common[1]} times)")

산출:

Most common age: 29 (appears 3 times)

// ⏭️ 운동 : 직원 데이터 세트 분석

파일을 만듭니다 employees.txt 다음 내용으로 :

Alice,London,Engineer,75000
Bob,Paris,Analyst,62000
Eve,London,Engineer,80000
John,New York,Manager,95000
Dana,Paris,Analyst,64000

파이썬 스크립트를 작성하십시오.

  1. 데이터를 사전 목록에로드합니다
  2. 도시 당 직원 수와 역할 당 평균 급여를 인쇄합니다.

5 일차 : 작문 기능

데이터를로드, 청소, 필터링 및 요약하는 코드를 작성했습니다. 이제 해당 로직을 함수로 패키지하므로 다음을 수행 할 수 있습니다.

  • 코드를 재사용하십시오
  • 처리 파이프 라인을 구축하십시오
  • 스크립트를 읽을 수 있고 테스트 가능하게 유지하십시오

// 1. 텍스트 입력 청소

기본 텍스트 청소를 수행하는 기능을 작성해 봅시다.

def clean_text(text):
    return text.strip().lower().replace(",", "").replace("$", "")

이제 파일에서 읽은 모든 필드에 이것을 적용 할 수 있습니다.

// 2. 행 레코드 생성

다음으로, 여기에는 파일의 각 행을 구문 분석하고 레코드를 작성하는 간단한 기능이 있습니다.

def parse_row(line):
    parts = line.strip().split(",")
    return {
        "name": parts[0],
        "city": parts[1],
        "role": parts[2],
        "salary": int(parts[3])
    }

이제 파일로드가됩니다.

with open("employees.txt") as file:
    rows = [parse_row(line) for line in file]

// 3. 집계 조력자

지금까지 평균 및 발생 수를 계산했습니다. 기본 도우미 기능을 동일하게 작성해 봅시다.

def average(values):
    return sum(values) / len(values) if values else 0

def count_by_key(data, key):
    counts = {}
    for item in data:
        k = item[key]
        counts[k] = counts.get(k, 0) + 1
    return counts

// ⏭️ 운동 : 이전 작업을 모듈화합니다

재사용 가능한 기능으로 어제의 솔루션을 Refactor :

  • load_data(filename)
  • average_salary_by_role(data)
  • count_by_city(data)

그런 다음 4 일차와 동일한 출력을 인쇄하는 스크립트에서 사용하십시오.

6 일 : 읽기, 쓰기 및 기본 오류 처리

데이터 파일은 종종 불완전하고 손상되며 잘못 지정됩니다. 그렇다면 어떻게 그들을 다루나요?

오늘은 배웁니다 :

  • 구조화 된 파일을 읽고 쓰는 방법
  • 오류를 우아하게 처리하는 방법
  • 충돌없이 나쁜 줄을 건너 뛰거나 로그 로그인하는 방법

// 1. 더 안전한 파일 읽기

존재하지 않는 파일을 읽으려고하면 어떻게됩니까? 파일을 “시도”하고 파일이 존재하지 않으면 “filenotfounderror”를 잡는 방법은 다음과 같습니다.

try:
    with open("employees.txt") as file:
        lines = file.readlines()
except FileNotFoundError:
    print("Error: File not found.")
    lines = []

// 2. 나쁜 줄을 우아하게 처리합니다

이제 나쁜 행을 건너 뛰고 완전한 행만 처리 해 보겠습니다.

records = []

for line in lines:
    try:
        parts = line.strip().split(",")
        if len(parts) != 4:
            raise ValueError("Incorrect number of fields")
        record = {
            "name": parts[0],
            "city": parts[1],
            "role": parts[2],
            "salary": int(parts[3])
        }
        records.append(record)
    except Exception as e:
        print(f"Skipping bad line: {line.strip()} ({e})")

// 3. 청소 된 데이터를 파일에 작성합니다

마지막으로, 청소 된 데이터를 파일에 쓰자.

with open("cleaned_employees.txt", "w") as out:
    for r in records:
        out.write(f"{r['name']},{r['city']},{r['role']},{r['salary']}\n")

// ⏭️ 운동 : 결함에 장애가있는 로더를 만듭니다

불완전하거나 지저분한 라인이있는 파일 raw_employees.txt 파일을 작성하십시오.

Alice,London,Engineer,75000
Bob,Paris,Analyst
Eve,London,Engineer,eighty thousand
John,New York,Manager,95000

스크립트를 작성하십시오.

  1. 유효한 레코드 만로드합니다
  2. 유효한 행의 수를 인쇄합니다
  3. 그것들을 씁니다 validated_employees.txt

7 일차 : 미니 데이터 프로파일 러 구축 (프로젝트 일)

지금까지 만들기위한 훌륭한 작업. 오늘은 다음과 같은 독립형 파이썬 스크립트를 만들 것입니다.

  • CSV 파일을로드합니다
  • 열 이름과 유형을 감지합니다
  • 유용한 통계를 계산합니다
  • 요약 보고서를 작성합니다

// 단계별 개요

1. 파일로드 :

def load_csv(filename):
    with open(filename) as f:
        lines = [line.strip() for line in f if line.strip()]
    header = lines[0].split(",")
    rows = [line.split(",") for line in lines[1:]]
    return header, rows

2. 열 형식 감지 :

def detect_type(value):
    try:
        float(value)
        return "numeric"
    except:
        return "text"

3. 각 열 프로파일 :

def profile_columns(header, rows):
    summary = {}
    for i, col in enumerate(header):
        values = [row[i].strip() for row in rows if len(row) == len(header)]
        col_type = detect_type(values[0])
        unique = set(values)
        summary[col] = {
            "type": col_type,
            "unique_count": len(unique),
            "most_common": max(set(values), key=values.count)
 }
 if col_type == "numeric":
 nums = [float(v) for v in values if v.replace('.', '', 1).isdigit()]
 summary[col]["average"] = sum(nums) / len(nums) if nums else 0
 return summary

4. 요약 작성 :

def write_summary(summary, out_file):
    with open(out_file, "w") as f:
        for col, stats in summary.items():
            f.write(f"Column: {col}\n")
            for k, v in stats.items():
                f.write(f"  {k}: {v}\n")
            f.write("\n")

다음과 같은 기능을 사용할 수 있습니다.

header, rows = load_csv("employees.csv")
summary = profile_columns(header, rows)
write_summary(summary, "profile_report.txt")

// ⏭️ 최종 연습

자신의 CSV 파일을 사용하거나 이전의 재사용 파일을 재사용하십시오. 프로파일 러를 실행하고 출력을 확인하십시오.

결론

축하해요! 데이터 과학 미니 코스의 파이썬을 완료했습니다. 🎉

이번 주 동안 기본 파이썬 데이터 구조에서 실제 데이터 문제를 처리하는 모듈 식 기능 및 스크립트 작성으로 이동했습니다. 이것들은 기본이며, 그럼에 따라 정말 기본적인 것들을 의미합니다. 이것을 시작점으로 사용하고 Python의 표준 라이브러리에 대해 자세히 알아 보는 것이 좋습니다 (물론).

저와 함께 배우아 주셔서 감사합니다. 행복한 코딩 및 데이터 크런치 미래!

발라 프리 야 c 인도의 개발자이자 기술 작가입니다. 그녀는 수학, 프로그래밍, 데이터 과학 및 컨텐츠 제작의 교차점에서 일하는 것을 좋아합니다. 그녀의 관심 분야와 전문 지식에는 DevOps, 데이터 과학 및 자연어 처리가 포함됩니다. 그녀는 독서, 쓰기, 코딩 및 커피를 즐깁니다! 현재 그녀는 자습서, 방법 안내, 의견 조각 등을 통해 개발자 커뮤니티와 지식을 배우고 공유하는 작업을하고 있습니다. Bala는 또한 매력적인 리소스 개요 및 코딩 자습서를 만듭니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다