행위

"Pandas"의 두 판 사이의 차이

DB CAFE

(새 문서: == For 문을 사용한 List,Dictionary 출력 == <source lang=python> import pandas as pd # ------------------------------ # -- 리스트의 index, value 출력 # ----------------...)
 
1번째 줄: 1번째 줄:
 +
== Pandas Numpy 사용법 ==
 +
<source lang=python>
 +
 
 +
# -*- coding: utf-8 -*-
 +
 +
# ********************************************
 +
# -- numpy : 배열 구조 및 연산
 +
# ********************************************
 +
import numpy as np
 +
 +
# -- 난수를 통한 배열 생성
 +
data = np.random.randn(2,3)
 +
print(data)
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 리스트를 통한 배열 생성
 +
data1 = [6,7,5,8,0,1]
 +
print(data1)
 +
 +
arr1 = np.array(data1)
 +
print(arr1)
 +
 +
# -- 2차원 리스트를 통한 배열 생성
 +
data2 = [[1,2,3,4],[5,6,7,8]]
 +
arr2 = np.array(data2)
 +
print(arr2)
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- array 구조 출력
 +
print(arr2.shape)
 +
 +
# -- 0으로 채워진 배열 생성
 +
print(np.zeros((2,3)))
 +
 +
# -- 순번으로 채워진 배열 생성
 +
print(np.arange(15))
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 다차원 배열 생성 및 계산
 +
arr = np.array([[1,2,3],[4,5,6]])
 +
print(arr)
 +
print(arr+arr)
 +
print(arr*arr)
 +
 +
print("-"*100) # ---------------------------
 +
 +
 +
# ********************************************
 +
# -- n차 배열
 +
# ********************************************
 +
 +
# -- 다차원 배열 생성 및 조회
 +
arr2d = np.array([[11,12,13],[14,15,16],[17,18,19]])
 +
print(arr2d)
 +
print(arr2d[1])
 +
print(arr2d[1][2])
 +
print(arr2d[:2, 1:])
 +
 +
print("-"*100) # ---------------------------
 +
 +
 +
# ********************************************
 +
# -- 불리언 색인(Boolean Index)
 +
# ********************************************
 +
names = np.array(["Bob", "Joe", "Will", "Bob", "Will", "Joe", "Joe"])
 +
data = np.random.randn(7,4)
 +
 +
print(names)
 +
print(data)
 +
 +
# -- 조건에 맞는지 boolean 리턴
 +
print(names == "Bob")
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 두 배열을 조합한 조회
 +
print(data[names=="Bob"])    # Bob이 있는 행
 +
print(data[names=="Bob",0])  # Bob이 있는 행의 0번째 열
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 배열의 OR 조건 Boolean 조회
 +
mask = (names=="Bob") | (names=="Will")
 +
print(mask)
 +
 +
# -- 조건에 따라 배열 값 변경 조회
 +
data[data<0] = 0
 +
print(data)
 +
 +
data[names!="Joe"] = 7
 +
print(data)
 +
 +
print("-"*100) # ---------------------------
 +
 +
 +
# ********************************************
 +
# -- 피벗팅 및 배열 재조합
 +
# ********************************************
 +
 +
# -- 피벗팅
 +
arr = np.arange(15).reshape((3,5))
 +
print(arr)
 +
print(arr.T)
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 재조합
 +
aaa = np.arange(16)
 +
print aaa
 +
 +
arr = np.arange(16).reshape(2,2,4)
 +
print(arr)
 +
 +
# -- 피벗팅
 +
arr2 = arr.swapaxes(1,2)
 +
print arr2
 +
 +
 +
# ********************************************
 +
# -- 배열 조회 조건 및 집계
 +
# ********************************************
 +
 +
arr = np.random.randn(4,4)
 +
print(arr)
 +
 +
print(np.where(arr>0,1,-1))
 +
print(arr)
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- where를 이용한 조건 조회
 +
print(np.where((0
 +
print(np.where(np.logical_and(arr>0, arr<10), 3, -3))
 +
print(np.where((0
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 배열 집계
 +
print(arr.mean())
 +
print(np.mean(arr))
 +
print(arr.sum())
 +
print(arr.cumsum())    # 이게 뭐더라?
 +
print(arr.min())
 +
print(arr.max())
 +
 +
print("-"*100) # ---------------------------
 +
 +
 +
# ********************************************
 +
# -- 정렬 밀 중복제거
 +
# ********************************************
 +
 +
arr = np.random.randn(5,3)
 +
print(arr)
 +
 +
# -- 정렬
 +
arr.sort(1)    # 행 단위로 정렬
 +
print(arr)
 +
 +
# -- 중복제거
 +
names = np.array(["Bob", "Joe", "Will", "Bob", "Will", "Joe", "Joe"])
 +
 +
print(np.unique(names))        # 중복제거
 +
print(len(np.unique(names)))  # 중복제거 개수
 +
print(set(names))              # 뭐지?
 +
print(np.unique(names)[1])    # 또 뭐더라?
 +
 +
print("-"*100) # ---------------------------
 +
 +
 +
# ********************************************
 +
# -- 선형대수(행렬 연산)
 +
# ********************************************
 +
x = np.array([[1,2,3],[4,5,6]])
 +
y = np.array([[6,3],[-1,7],[8,9]])
 +
print(x)
 +
print(y)
 +
 +
# -- 행렬 곱하기?
 +
print(x.dot(y))  # print(x*y)는 에러발생
 +
 +
print("-"*100) # ---------------------------
 +
 +
# -- 뭔지 모름..ㅠㅠ
 +
from numpy.linalg import inv, qr
 +
x = np.random.randn(5,5)
 +
 +
mat = x.T.dot(x)
 +
 +
print(inv(mat))
 +
print(mat.dot(inv(mat)))
 +
 +
 +
# ********************************************
 +
# -- 난수 생성
 +
# ********************************************
 +
samples = np.random.normal(size =(3,4))
 +
print(samples)
 +
 +
samples = np.random.normal(size =(2,2))
 +
print(samples)
 +
 +
data = np.random.randn(2,2)
 +
print(data)
 +
</source>
 +
 
== For 문을 사용한  List,Dictionary 출력 ==
 
== For 문을 사용한  List,Dictionary 출력 ==
 
<source lang=python>
 
<source lang=python>

2020년 3월 15일 (일) 01:24 판

thumb_up 추천메뉴 바로가기


1 Pandas Numpy 사용법[편집]

# -*- coding: utf-8 -*-

# ********************************************
# -- numpy : 배열 구조 및 연산
# ********************************************
import numpy as np

# -- 난수를 통한 배열 생성
data = np.random.randn(2,3)
print(data)

print("-"*100) # ---------------------------

# -- 리스트를 통한 배열 생성
data1 = [6,7,5,8,0,1]
print(data1)

arr1 = np.array(data1)
print(arr1)

# -- 2차원 리스트를 통한 배열 생성
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
print(arr2)

print("-"*100) # ---------------------------

# -- array 구조 출력
print(arr2.shape)

# -- 0으로 채워진 배열 생성
print(np.zeros((2,3)))

# -- 순번으로 채워진 배열 생성
print(np.arange(15))

print("-"*100) # ---------------------------

# -- 다차원 배열 생성 및 계산
arr = np.array([[1,2,3],[4,5,6]])
print(arr)
print(arr+arr)
print(arr*arr)

print("-"*100) # ---------------------------


# ********************************************
# -- n차 배열
# ********************************************

# -- 다차원 배열 생성 및 조회
arr2d = np.array([[11,12,13],[14,15,16],[17,18,19]])
print(arr2d)
print(arr2d[1])
print(arr2d[1][2])
print(arr2d[:2, 1:])

print("-"*100) # ---------------------------


# ********************************************
# -- 불리언 색인(Boolean Index)
# ********************************************
names = np.array(["Bob", "Joe", "Will", "Bob", "Will", "Joe", "Joe"])
data = np.random.randn(7,4)

print(names)
print(data)

# -- 조건에 맞는지 boolean 리턴
print(names == "Bob")

print("-"*100) # ---------------------------

# -- 두 배열을 조합한 조회
print(data[names=="Bob"])     # Bob이 있는 행
print(data[names=="Bob",0])   # Bob이 있는 행의 0번째 열

print("-"*100) # ---------------------------

# -- 배열의 OR 조건 Boolean 조회
mask = (names=="Bob") | (names=="Will")
print(mask)

# -- 조건에 따라 배열 값 변경 조회
data[data<0] = 0
print(data)

data[names!="Joe"] = 7
print(data)

print("-"*100) # ---------------------------


# ********************************************
# -- 피벗팅 및 배열 재조합
# ********************************************

# -- 피벗팅
arr = np.arange(15).reshape((3,5))
print(arr)
print(arr.T)

print("-"*100) # ---------------------------

# -- 재조합
aaa = np.arange(16)
print aaa

arr = np.arange(16).reshape(2,2,4)
print(arr)

# -- 피벗팅
arr2 = arr.swapaxes(1,2)
print arr2


# ********************************************
# -- 배열 조회 조건 및 집계
# ********************************************

arr = np.random.randn(4,4)
print(arr)

print(np.where(arr>0,1,-1))
print(arr)

print("-"*100) # ---------------------------

# -- where를 이용한 조건 조회
print(np.where((00, arr<10), 3, -3))
print(np.where((0

2 For 문을 사용한 List,Dictionary 출력[편집]

import pandas as pd
 
# ------------------------------
# -- 리스트의 index, value 출력
# ------------------------------
lst = ["AAA", "BBB", "", "DDD"]
 
for index in range(len(lst)):
    print(index, lst[index])
 
print("... 리스트 index, value 출력[range(len()) 사용]", "." * 100, "\n")
 
for idx, val in enumerate(lst):
    print(idx, val)
 
print("... 리스트 index, value 출력[enumerate() 사용]", "." * 100, "\n")
 
for index in lst:
    print(index)
 
print("... 리스트 출력", "." * 100, "\n")
 
 
# ------------------------------
# -- list-in-list에서의 중복제거
# ------------------------------
oldlist = [['a', 'b', 'a'], ['a', 'p', 'f', 'b'], ['b', 's', 'r']]
 
newlist = list()
for sublist in oldlist:
    for list in sublist:
        if list not in newlist:
            newlist.append(list)
 
print(newlist)
print(",,, list in list 중복제거", "," * 100, "\n")
 
 
# ------------------------------
# -- 사전의 key, value 출력
# ------------------------------
d = {"apple": 100, "orange": 200, "banana": 300}
for key, value in d.items():
    print(key, value)
 
print(";;; 사전 key, value 출력[items() 사용]", ";" * 100, "\n")
 
 
# ------------------------------
# -- 데이터프레임의 index, value 출력
# ------------------------------
inp = [{'c1': 10, 'c2': 100}, {'c1': 11, 'c2': 110}, {'c1': 12, 'c2': 120}]
df = pd.DataFrame(inp)
 
print(df, '\n')
print("^^^ df 원본 출력", "^" * 100, "\n")
 
for idx, row in df.iterrows():
    print("idx=", idx, " c1=", row['c1'], " c2=", row['c2'])  # row[0] 형식 가능
 
print("^^^ DF index, column 출력[iterrows() 사용]", "^" * 100, "\n")
 
for idx in df.index:
    print("idx=", idx)
 
print("^^^ DF index 출력[df.index 사용]", "^" * 100, "\n")

for row in range(0, len(df)):
    print("row=", row)