판다와 커프스 단추로 플롯
Pandas는 데이터 분석을 위해 Python에서 매우 인기있는 라이브러리입니다. 또한 자체 플롯 기능을 지원합니다. 그러나 Pandas 플롯은 시각화에서 상호 작용을 제공하지 않습니다. 고맙게도 plotly의 대화 형 및 동적 플롯은 다음을 사용하여 구축 할 수 있습니다.Pandas dataframe 사물.
간단한 목록 개체에서 Dataframe을 구축하는 것으로 시작합니다.
data = [['Ravi',21,67],['Kiran',24,61],['Anita',18,46],['Smita',20,78],['Sunil',17,90]]
df = pd.DataFrame(data,columns = ['name','age','marks'],dtype = float)
데이터 프레임 열은 데이터 값으로 사용됩니다. x 과 y그래프 개체 추적의 속성. 여기에서는 다음을 사용하여 막대 추적을 생성합니다.name 과 marks 열.
trace = go.Bar(x = df.name, y = df.marks)
fig = go.Figure(data = [trace])
iplot(fig)
Jupyter 노트북에 아래와 같이 간단한 막대 그래프가 표시됩니다.
Plotly는 d3.js 특히 다음과 직접 사용할 수있는 차트 라이브러리입니다. Pandas dataframes 이름이 다른 라이브러리 사용 Cufflinks.
아직 사용할 수 없다면 좋아하는 패키지 관리자를 사용하여 커프스 링크 패키지를 설치하십시오. pip 아래와 같이-
pip install cufflinks
or
conda install -c conda-forge cufflinks-py
먼저, 다음과 같은 다른 라이브러리와 함께 커프스 링크를 가져옵니다. Pandas 과 numpy 오프라인 사용을 위해 구성 할 수 있습니다.
import cufflinks as cf
cf.go_offline()
이제 직접 사용할 수 있습니다. Pandas dataframe 추적 및 도형 개체를 사용하지 않고도 다양한 종류의 플롯을 표시 할 수 있습니다. graph_objs module 우리가 이전에했던 것처럼.
df.iplot(kind = 'bar', x = 'name', y = 'marks')
이전 그림과 매우 유사한 막대 그림이 아래와 같이 표시됩니다.
데이터베이스의 Pandas 데이터 프레임
데이터 프레임을 구성하기 위해 Python 목록을 사용하는 대신 다른 유형의 데이터베이스에있는 데이터로 채울 수 있습니다. 예를 들어 CSV 파일, SQLite 데이터베이스 테이블 또는 mysql 데이터베이스 테이블의 데이터를 Pandas 데이터 프레임으로 가져올 수 있으며, 결국에는 다음을 사용하여 플롯 그래프로 표시됩니다.Figure object 또는 Cufflinks interface.
데이터를 가져 오려면 CSV file, 우리는 사용할 수 있습니다 read_csv() Pandas 라이브러리의 기능.
import pandas as pd
df = pd.read_csv('sample-data.csv')
데이터를 사용할 수있는 경우 SQLite database table, 다음을 사용하여 검색 할 수 있습니다. SQLAlchemy library 다음과 같이-
import pandas as pd
from sqlalchemy import create_engine
disk_engine = create_engine('sqlite:///mydb.db')
df = pd.read_sql_query('SELECT name,age,marks', disk_engine)
반면에 MySQL database 다음과 같이 Pandas 데이터 프레임에서 검색됩니다-
import pymysql
import pandas as pd
conn = pymysql.connect(host = "localhost", user = "root", passwd = "xxxx", db = "mydb")
cursor = conn.cursor()
cursor.execute('select name,age,marks')
rows = cursor.fetchall()
df = pd.DataFrame( [[ij for ij in i] for i in rows] )
df.rename(columns = {0: 'Name', 1: 'age', 2: 'marks'}, inplace = True)