1. 程式人生 > 其它 >Pandas 讀取輸出檔案 + 資料查詢

Pandas 讀取輸出檔案 + 資料查詢

1)讀取輸出檔案

import pandas as pd
# 1)讀取csv
df = pd.read_csv(path)
df.head()		 # 檢視前幾行資料
df.shape		# 檢視資料的形狀,返回(行數,列數)
df.columns		# 檢視列名列表
df.index		# 檢視索引列
df.dtypes		# 檢視每列資料型別
df.to_csv(path)

# 2)讀取txt檔案
df = pd.read_txt(
            file_path,
            sep='y',
            header=None,
            names=['pdate', 'pv', 'uv']			# 指定資料列名
        )

# 3)讀取excel檔案
df = pd.read_excel(file_path)
df.to_excel(path, sheet_name='Your Sheet Name')

# 4)讀取mysql資料表
import pymysql
conn = pymysql.connect(
	host='127.0.0.1',
	user='root',
	password='kingshen2',
	database='learn',
	charset='utf8'
        )
result = pd.read_sql('select * from tb_book', con=conn)

2)資料查詢

import pandas as pd
# 1)使用單個label值進行查詢資料:   
 df.loc[2]		# 預設對為2的索引進行查詢
df.loc['2018-01-03', 'bWendu']		# 查詢單行和單列   label值和列 
df.loc['2018-01-03', ['bWendu', 'yWendu']]		# 查詢單行和多列 label值和多列

# 2)使用值列表批量查詢:
 df.loc[['2018-01-01', '2018-01-02', '2018-01-03'], 'bWendu']		# 查詢多行和單列 多個label值和列
df.loc[['2018-01-01', '2018-01-02', '2018-01-03'], ['bWendu', 'yWendu']]		# 查詢多行和多列 多個label值和多列

# 3)對傳入資料區間進行範圍查詢,包含開始和結束:
df.loc['2018-01-01':'2018-01-03', 'bWendu']		# 行區間查詢 label區間和單列
df.loc['2018-01-01', 'bWendu': 'fengxiang']		# 列區間查詢 單個label和列區間
df.loc['2018-01-01':'2018-01-03', 'bWendu': 'fengxiang']		# 行和列區間查詢 label區間和列區間

# 4)使用條件表示式查詢:
df.loc[df['yWendu']<0, :]		# 最低溫度小於0度,如果不對label值進行限制,後面為 : 表示全部區間

# 5)複雜查詢 & | !,每個判斷條件都需要帶括號:
df.loc[(df['bWendu'] <= 0) & (df['yWendu'] <= 0) & (df['tianqi']=='多雲'), :]

# 7)呼叫函式查詢    本質上也是複雜查詢:
df.loc[lambda df: (df['bWendu']<0) & (df['yWendu'] <0), :]

# 6)自定義函式進行查詢     索引為ymd  可以同時對標籤和列進行限制:
def query_my_weather(df):
	return df.index.str.startswith('2018-01') & df['aqiLevel']==1
df.loc[query_my_weather, :]