當前位置:首頁 » 編程語言 » pandasreadsql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

pandasreadsql

發布時間: 2022-04-24 09:59:35

① python執行sql,並保存到excel,很慢

你在伺服器上直接查詢,只是讀取一次數據到內存中。
你現在的代碼,首先要從資料庫讀出,然後要寫入df,df可以看做一個內存資料庫,寫入需要做一些相關的處理,例如索引之類的。
然後又要從df讀出,再寫入excel,這個步驟是寫入磁碟,也是花費時間最多的。

② 用python數據分析是不是用的pandas

pandas包最基本的功能

1、讀取數據:

data = pd.read_csv('my_file.csv')

data=pd.read_csv('my_file.csv',sep=';',encoding='latin-1',nrows=1000, kiprows=[2,5])

sep變數代表分隔符。因為Excel中的csv分隔符是「;」,因此需要顯示它。編碼設置為「latin-1」以讀取法語字元。nrows=1000表示讀取前1000行。skiprows=[2,5]表示在讀取文件時將刪除第2行和第5行

最常用的函數:read_csv, read_excel

還有一些很不錯的函數:read_clipboard、read_sql

2、寫入數據

data.to_csv('my_new_file.csv', index=None)

index=None將簡單地按原樣寫入數據。如果你不寫index=None,會得到額外的行。

我通常不使用其他函數,比如to_excel,to_json,to_pickle,to_csv,雖然它們也做得很好,但是csv是保存表最常用的方法。

3、檢查數據:

data.shape

data.describe()

data.head(3)

.head(3)列印數據的前3行,.tail()函數將查看數據的最後一行。

data.loc[8]

列印第8行。

data.loc[8, 'column_1']

將第8行值列印在「column_1」上。

data.loc[range(4,6)]

列印第4行到第6行。

③ pandas 可以載入sql語句嗎

各種資料庫有相應的軟體包,SQL Server有pyodbc,Oracle有cx_Oracle,MySQL有MySQLdb,各種包有相應的調用方法。 需要根據需求選擇合適的資料庫類型,然後選擇訪問資料庫的包進一步細化後續的工作。

④ 怎麼使用Python中Pandas庫Resample,實現重采樣,完成線性插值

#python中的pandas庫主要有DataFrame和Series類(面向對象的的語言更願意叫類) DataFrame也就是
#數據框(主要是借鑒R裡面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數據沒問題,起性能可以跟同等配置的sas媲美
#DataFrame索引 df.loc是標簽選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標簽']
df.loc[行標簽,列標簽]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的數據
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數據
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數據,返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據你給到的索引類型判斷是使用位置還是標簽進行切片
print(df.ix[0:2])
#DataFrame根據條件選取子集 類似於sas裡面if、where ,R裡面的subset之類的函數
df[df.Murder>13]
df[(df.Murder>10)&(df.Rape>30)]
df[df.sex==u'男']
#重命名 相當於sas裡面的rename R軟體中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})
#刪除列 相當於sas中的drop R軟體中的test['col']<-null
df.drop(['a','b'],axis=1) or del df[['a','b']]
#排序 相當於sas裡面的sort R軟體裡面的df[order(x),]
df.sort(columns='C') #行排序 y軸上
df.sort(axis=1) #各個列之間位置排序 x軸上
#數據描述 相當於sas中proc menas R軟體裡面的summary
df.describe()
#生成新的一列 跟R裡面有點類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B']) #效率最高
df.join(Series(df['columns'],name='new_columns'))
#列上面的追加 相當於sas中的append R裡面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)
#最經典的join 跟sas和R裡面的merge類似 跟sql裡面的各種join對照
merge()
#刪除重行 跟sas裡面nokey R裡面的which(!plicated(df[])類似
df.drop_plicated()
#獲取最大值 最小值的位置 有點類似矩陣裡面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什麼不同 自己摸索去
#讀取外部數據跟sas的proc import R裡面的read.csv等類似
read_excel() read_csv() read_hdf5() 等
與之相反的是df.to_excel() df.to_ecv()
#缺失值處理 個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999) #用9999填充
#鏈接資料庫 不多說 pandas裡面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經典
#寫數據進資料庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas裡面的中的by R軟體中dplyr包中的group_by sql裡面的group by功能是一樣的 這里不多說
#求啞變數
miper=pd.get_mmies(df['key'])
df['key'].join(mpier)
#透視表 和交叉表 跟sas裡面的proc freq步類似 R裡面的aggrate和cast函數類似
pd.pivot_table()
pd.crosstab()
#聚合函數經常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})

#數據查詢過濾

test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['proct_desc'] = misc['proct_desc'].str.replace('\n', '')
刪除字元串前後空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]

對dataframe中元素,進行類型轉換

df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)

#時間變換 主要依賴於datemie 和time兩個包
http://www.2cto.com/kf/201401/276088.html
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數據
df2["Author"].str.replace("<.+>", "").head() #replace("<.+>", "")表示將字元串中以」<」開頭;以」>」結束的任意子串替換為空字元串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數,類似於sql裡面count(distinct name)
#pandas中最核心 最經典的函數apply map applymap

⑤ 如何解決pandas.read

pandas.read_csv()遇到讀進來亂碼問題
1.設置encoding='gbk'或者encoding='utf-8'。pandas.read_csv('data.csv',encoding='gbk')
2.如果設置encoding直接報錯的話
解決方法是:用記事本打開csv文件,另存為設置編碼為utf-8,然後重新讀取文件設置encoding='utf-8'就好了

⑥ python怎麼讀mysql的數據

代碼:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#
-*-
coding:
utf-8
-*-
import
pandas
as
pd
import
pymysql
##
加上字元集參數,防止中文亂碼
dbconn=pymysql.connect(
host="**********",
database="kimbo",
user="kimbo_test",
password="******",
port=3306,
charset='utf8'
)
#sql語句
sqlcmd="select
col_name,col_type,col_desc
from
itf_datadic_dtl_d
limit
10"
#利用pandas
模塊導入mysql數據
a=pd.read_sql(sqlcmd,dbconn)

⑦ pandas中read函數的使用

利用Python的pandas數據結構來讀取excel表格的數據,部分代碼如下:

#-*- coding:utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

catering_data="catering_sale.xls"
data=pd.read_excel(catering_data,index_col=u'日期')
#讀取數據,指定"日期"列為索引列

大多數書上都是這樣寫的,但是在Python2.7上運行時出現錯誤。(沒有在Python3.x版本試過)
出現了如下問題:
這里寫圖片描述
使用help(pd.read_excel)發現參數中有必選參數sheetname,加入到函數中,代碼如下:

#-*- coding:utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

catering_data="catering_sale.xls"
data=pd.read_excel(catering_data,sheetname=0,index_col=u'日期')

運行成功。
sheetname=0 的意思是:讀取xls文件中的第一個表格。(假設文件中有很多個表格)
另外,也可以將文件轉換成csv格式,就不需要這個參數了。代碼如下:

catering_data="catering_sale.csv"
data=pd.read_csv(catering_data)

⑧ 在Pandas用read_excel函數讀取數據時怎麼保留文本

利用Python的pandas數據結構來讀取excel表格的數據,部分代碼如下:

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

import pandas as pd

import matplotlib.pyplot as plt

catering_data="catering_sale.xls"

data=pd.read_excel(catering_data,index_col=u'日期')

#讀取數據,指定"日期"列為索引列;

大多數書上都是這樣寫的,但是在Python2.7上運行時出現錯誤。(沒有在Python3.x版本試過)

出現了如下問題:

這里寫圖片描述

使用help(pd.read_excel)發現參數中有必選參數sheetname,加入到函數中,代碼如下:

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

import pandas as pd

import matplotlib.pyplot as plt

catering_data="catering_sale.xls"

data=pd.read_excel(catering_data,sheetname=0,index_col=u'日期')

運行成功。

sheetname=0 的意思是:讀取xls文件中的第一個表格。(假設文件中有很多個表格)

另外,也可以將文件轉換成csv格式,就不需要這個參數了。代碼如下:

catering_data="catering_sale.csv"

data=pd.read_csv(catering_data)

1、讀取txt數據

In [1]: import pandas as pd

In [2]: mydata_txt = pd.read_csv('C:\test_code.txt',sep = ' ',encoding = 'utf-8')

對於中文的文本文件常容易因為編碼的問題而讀取失敗,正如上圖所示。遇到這樣的編碼問題該如何處置呢?解決辦法有兩種情況:

1)當原始文件txt或csv的數據不是uft8格式時,需要另存為utf8格式編碼;

2)如果原始的數據文件就是uft8格式,為了正常讀入,需要將read_csv函數的參數encoding設置為utf-8

將原始數據另存為utf8格式的數據,重新讀入txt數據

In [3]: mydata_txt = pd.read_csv('C:\test.txt',sep = ' ',encoding = 'utf-8')

In [4]: mydata_txt

很順利,txt文本文件數據就這樣進入了Python的口袋裡了。

2、讀取csv數據

csv文本文件是非常常用的一種數據存儲格式,而且其存儲量要比Excel電子表格大很多,下面我們就來看看如何利用Python讀取csv格式的數據文件:

In [5]: mydata_csv = pd.read_csv('C:\test.csv',sep = ',',encoding = 'utf-8')

In [6]: mydata_csv

如果你善於總結的話,你會發現,txt文件和csv文件均可以通過pandas模塊中的read_csv函數進行讀取。該函數有20多個參數,類似於R中的read.table函數,如果需要查看具體的參數詳情,可以查看幫助文檔:help(pandas.read_csv)

⑨ 如何用 Python 執行常見的 Excel 和 SQL 任務

你可以導入.sql 資料庫並用 SQL 查詢中處理它們。在Excel中,你可以雙擊一個文件,然後在電子表格模式下開始處理它。在 Python 中,有更多復雜的特性,得益於能夠處理許多不同類型的文件格式和數據源的。
使用一個數據處理庫 Pandas,你可以使用 read 方法導入各種文件格式。,使用這個方法所能導入完整的文件格式清單是在 Pandas 文檔中。你可以導入從 CSV 和 Excel 文件到 HTML 文件中的所有內容!