without haste but without rest

02. Data Load with sqlite3 본문

Homework/DataMining

02. Data Load with sqlite3

JinungKim 2020. 4. 7. 10:34

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