without haste but without rest
02. Data Load with sqlite3 본문
sqlite3
라이브러리 메커니즘
1. 파일 연결 ( sqlite3.connect() )
2. 커서 객체 생성 ( conn.cursor() )
3. 커서 객체로 작업 ( conn.execute() )
4. 데이터 인출 (fetchall() ) // 옵션 따라서 fetch 시리즈가 있는 듯
import sqlite3
sqlite_file = './data/boston.db'
# connecting to the database file
conn = sqlite3.connect(sqlite_file)
# initialize a cursor obect
cur = conn.cursor()
# define a traversing search
cur.execute("SELECT * FROM boston LIMIT 5;")
# fetch and print
data = cur.fetchall()
print(data)
cur.execute("SELECT ZN FROM boston WHERE ZN > 0.0;")
data = cur.fetchall()
print(data)
판다스 데이터 프레임에서 쿼리 작성
pd.read_sql_query
import pandas as pd
# get all data inside boston table limited to 5 rows
df = pd.read_sql_query("SELECT * FROM boston LIMIT 5;", conn)
print("df.shape = " + str(df.shape))
# get all data inside boston table
df = pd.read_sql_query("SELECT * FROM boston;", conn) # 테이블(릴레이션 로드
print("df.shape = " + str(df.shape)) # 테이블 쉐입 출력
print("Sanity check with Pandas head():")
print(df.head()) # 테이블 헤드 출력
print("Summarize with Pandas describe():")
print(df.describe().transpose()) # 기술 통계 정보 출력
# 조걸절 활용
# get all data inside boston table that has ZN values greater 0
df = pd.read_sql_query("SELECT * FROM boston WHERE ZN > 0.0;", conn)
print("df.shape = " + str(df.shape))
df.head()
df = pd.read_sql_query("""
SELECT record, ZN, AGE, TAX FROM boston
WHERE ZN > 0.0 and record > 250;
""",
conn)
print(df.head())
print("df.shape = " + str(df.shape))
# db, csv 파일 쓰고 항상 닫아주기
# close connection
conn.close()
순서대로
boston table limit 5 의 쉐입
boston table no limit 의 쉐입
boston table head 출력
summarzie (기술 통계 자료)
1. ZN 속성이 0 이상인 레코드
2. ZN 속성이 0 이상, 레코드 속성이 250 이상인 record, ZN, AGE , TAX 선택
3. 2번의 쉐입
파일 변경하기
DB, CSV 파일을 새 타이틀로 저장하기
# use Pandas 'to_sql' method to commit changes to connection
import pandas as pd
import sqlite3
sqlite_file = './data/boston.db' # 디비 파일 로드
conn = sqlite3.connect(sqlite_file) # 커넥션
cur = conn.cursor() # 커서 객체 생성
# 데이터 로드
df = pd.read_sql_query("SELECT * FROM boston;", conn)
# 로드한 데이터에 to_sql 메소드 사용
#( 저장할 파일명, 커넥션 디비(파일), 덮어쓰기 옵션
df.to_sql("boston_updated", conn, if_exists="replace") # if_exists 이미 존재하면 덮어쓰기
# 디비에 boston_updated 테이블이 추가된 것을 확인
df_1 = pd.read_sql_query("SELECT * FROM boston_updated LIMIT 5;", conn)
print("df.shape = " + str(df_1.shape))
cur.execute("SELECT * FROM sqlite_master WHERE type='table';")
data = cur.fetchall()
print(data)
df_1.shape
cur.excute("SELECT * FROM sqlite_master WHERE type='table';) // table 타입 출력
data = cur.fetchall()
print(data)
테이블 드롭
# 테이블 삭제
# boston_updated table drop SQL
cur.execute("DROP TABLE 'boston_updated'")
cur.execute("SELECT * FROM sqlite_master WHERE type='table';")
data = cur.fetchall()
print(data)
# close connection
conn.close()
다양한 방법으로 데이터 로드
1. 웹에서 데이터 로드 (URL)
# load from web URL
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
df = pd.read_csv(url)
print(df.head())
2. csv, xlml file
# load from file
df = pd.read_csv("./data/boston.csv")
print(df.head())
df.to_csv("./data/boston_updated.csv", index = False)
3. scikit-learn
# load from web Scikit-learn
from sklearn.datasets import load_iris
dataset = load_iris()
df = pd.DataFrame(dataset.data, columns = dataset.feature_names)
df['species'] = dataset.target
print(df.head())
4. seaborn
# load from Seaborn
import seaborn as sns
df = sns.load_dataset("flights")
print(df.head())
보충
'Homework > DataMining' 카테고리의 다른 글
06. Feature Selection (0) | 2020.05.01 |
---|---|
05. One-Hot Encoding (0) | 2020.05.01 |
04. Interpolation / Normalization & Standardization (0) | 2020.04.21 |
03. Visualization with Seabron (0) | 2020.04.14 |
01. Data Exploration & Visualization (0) | 2020.03.24 |
Comments