① 統計幾十萬行的數據什麼資料庫好
mysql 就可以了
甚至sqlite這種內嵌式資料庫都可以
或者直接用第三方計算庫 比如pandas
② python獲取資料庫數據一共有多少行(2023年最新分享)
導讀:很多朋友問到關於python獲取資料庫數據一共有多少行的相關問題,本文首席CTO筆記就來為大家做個詳細解答,供大家參考,希望對大家有所幫助!一起來看看吧!
Python資料庫API(DBAPI)雖然Python需要為操作不同的資料庫使用不同的模塊,但不同的資料庫模塊並非沒有規律可循,因為它們基本都遵守Python制訂的DBAPI協議,目前該協議的最新版本是2.0,因此這些資料庫模塊有很多操作其實都是相同的。下面先介紹不同資料庫模塊之間的通用內容。
全局變數
Python推薦支持DBAPI2.0的資料庫模塊都應該提供如下3個全局變數:
apilevel:該全局變數顯示資料庫模塊的API版本號。對於支持DBAPI2.0版本的資料庫模塊來說,該變數值通常就是2.0。如果這個變數不存在,則可能該資料庫模塊暫時不支持DBAPI2.0。讀者應該考慮選擇使用支持該資料庫的其他資料庫模塊。
threadsafety:該全局變數指定資料庫模塊的線程安全等級,該等級值為0~3,其中3代表該模塊完全是線程安全的;1表示該模塊具有部分線程安全性,線程可以共享該模塊,但不能共享連接;0則表示線程完全不能共享該模塊。
paramstyle:該全局變數指定當SQL語句需要參數時,可以使用哪種風格的參數。該變數可能返回如下變數值:
format:表示在SQL語句中使用Python標準的格式化字元串代表參數。例如,在程序中需要參數的地方使用%s,接下來程序即可為這些參數指定參數值。
pyformat:表示在SQL語句中使用擴展的格式代碼代表參數。比如使用%(name),這樣即可使用包含key為name的字典為該參數指定參數值。
qmark:表示在SQL語句中使用問號(?)代表參數。在SQL語句中有幾個參數,全部用問號代替。
numeric:表示在SQL語句中使用數字佔位符(:N)代表參數。例如:1代表一個參數,:2也表示一個參數,這些數字相當於參數名,因此它們不一定需要連續。
named:表示在SQL語句中使用命名佔位符(:name)代表參數。例如:name代表一個參數,:age也表示一個參數。
通過查閱這些全局變數,即可大致了解該資料庫API模塊的對外的編程風格,至於該模塊內部的實現細節,完全由該模塊實現者負責提供,通常不需要開發者關心。
資料庫API的核心類
遵守DBAPI2.0協議的資料庫模塊通常會提供一個connect()函數,該函數用於連接資料庫,並返回資料庫連接對象。
資料庫連接對象通常會具有如下方法和屬性:
cursor(factory=Cursor):打開游標。
commit():提交事務。
rollback():回滾事務。
close():關閉資料庫連接。
isolation_level:返回或設置資料庫連接中事務的隔離級別。
in_transaction:判斷當前是否處於事務中。
上面第一個方法可以返回一個游標對象,游標對象是PythonDBAPI的核心對象,該對象主要用於執行各種SQL語句,包括DDL、DML、select查詢語句等。使用游標執行不同的SQL語句返回不同的數據。
游標對象通常會具有如下方法和屬性:
execute(sql[,parameters]):執行SQL語句。parameters參數用於為SQL語句中的參數指定值。
executemany(sql,seq_of_parameters):重復執行SQL語句。可以通過seq_of_parameters序列為SQL語句中的參數指定值,該序列有多少個元素,SQL語句被執行多少次。
executescript(sql_script):這不是DBAPI2.0的標准方法。該方法可以直接執行包含多條SQL語句的SQL腳本。
fetchone():獲取查詢結果集的下一行。如果沒有下一行,則返回None。
fetchmany(size=cursor.arraysize):返回查詢結果集的下N行組成的列表。如果沒有更多的數據行,則返回空列表。
fetchall():返回查詢結果集的全部行組成的列表。
close():關閉游標。
rowcount:該只讀屬性返回受SQL語句影響的行數。對於executemany()方法,該方法所修改的記錄條數也可通過該屬性獲取。
lastrowid:該只讀屬性可獲取最後修改行的rowid。
arraysize:用於設置或獲取fetchmany()默認獲取的記錄條數,該屬性默認為1。有些資料庫模塊沒有該屬性。
description:該只讀屬性可獲取最後一次查詢返回的所有列的信息。
connection:該只讀屬性返回創建游標的資料庫連接對象。有些資料庫模塊沒有該屬性。
總結來看,Python的DBAPI2.0由一個connect()開始,一共涉及資料庫連接和游標兩個核心API。它們的分工如下:
資料庫連接:用於獲取游標、控制事務。
游標:執行各種SQL語句。
掌握了上面這些API之後,接下來可以大致歸納出PythonDBAPI2.0的編程步驟。
操作資料庫的基本流程
使用PythonDBAPI2.0操作資料庫的基本流程如下:
調用connect()方法打開資料庫連接,該方法返回資料庫連接對象。
通過資料庫連接對象打開游標。
使用游標執行SQL語句(包括DDL、DML、select查詢語句等)。如果執行的是查詢語句,則處理查詢數據。
關閉游標。
關閉資料庫連接。
下圖顯示了使用PythonDBAPI2.0操作資料庫的基本流程。
python數據分析怎樣查有多少行數據from?__future__?import?print_functionimport?timeif?__name__?==?'__main__':
????import?sys
????start?=?time.time()
????with?open(sys.argv[1],'rb')?as?f:
????????count?=?0
????????last_data?=?' '
????????while?True:
????????????data?=?f.read(0x400000)
????????????if?not?data:
????????????????break
????????????count?+=?data.count(b' ')
????????????last_data?=?data
????????if?last_data[-1:]?!=?b' ':
????????????count?+=?1?#?Remove?this?if?a?wc-like?count?is?needed
????end?=?time.time()
????print(count)
????print((end-start)?*?1000)
這跟wc-l略有區別,如果要跟wc-l一致的話,可以將帶注釋的行刪掉。
這里沒有處理universalnewline、忽略空行等邏輯,如果需要這些功能,程序會變得復雜一些。
請教python操作資料庫表的結果集的整理
,選擇開始菜單中→程序→【ManagementSQLServer2008】→【SQLServerManagementStudio】命令,打開【SQLServerManagementStudio】窗口,並使用Windows或SQLServer身份驗證建立連接。
在【對象資源管理器】窗口中展開伺服器,然後選擇【資料庫】節點
右鍵單擊【資料庫】節點,從彈出來的快捷菜單中選擇【新建資料庫】命令。
執行上述操作後,會彈出【新建資料庫】對話框。在對話框、左側有3個選項,分別是【常規】、【選項】和【文件組】。完成這三個選項中的設置會後,就完成了資料庫的創建工作,
在【資料庫名稱】文本框中輸入要新建資料庫的名稱。例如,這里以「新建的資料庫」。
在【所有者】文本框中輸入新建資料庫的所有者,如sa。根據資料庫的使用情況,選擇啟用或者禁用【使用全文索引】復選框。
在【資料庫文件】列表中包括兩行,一行是資料庫文件,而另一行是日記文件。通過單擊下面的【添加】、【刪除】按鈕添加或刪除資料庫文件。
切換到【選項頁】、在這里可以設置資料庫的排序規則、恢復模式、兼容級別和其他屬性。
切換到【文件組】頁,在這里可以添加或刪除文件組。
完成以上操作後,單擊【確定】按鈕關閉【新建資料庫】對話框。至此「新建的數據」資料庫創建成功。新建的資料庫可以再【對象資源管理器】窗口看到。
python導入txt到資料庫每8行寫入#?8行結束有一個空白行
with?open('data.txt')?as?data:
????line?=?1
????sql?=?'insert?into?fz_esx?values(%s,%s,%s,%s,%s,%s,%s,%s)'
????values?=?[]
????for?d?in?data:
????????if?d?!=?'':
????????????values.append('"%s"'?%?str(d))
????????if?line?%?9?==?0:
????????????#?執行sql插入代碼
????????????#?urs.exec(sql?%?tuple(values))
????????????del?values[:]
????????line?+=?1
????????
#?當然如果不行浪費sql資源,可以全部拼接完inert語句?一次執行
#?如果是生產環境,?建議使用隊列的思路,例如"芹菜"庫
python把數據寫入文件,規定每個文件只有固定行數要規定行數的話,就得先規定列數了。否則從頭到尾就一行,也就沒有意義了,如果可以確定行尾的話,也可以用換行確定計數。例:
foriteminyourdata:
count=0
f=open('yourfile','w')
while(count20):
f.write(yourdata)
count+=1
f.close()
python中如何將表中的數據做成一張表,然後再從中取出數據?第一部分是生成數據表,常見的生成方法有兩種,第一種是導入外部數據,第二種是直接寫入數據。Excel中的文件菜單中提供了獲取外部數據的功能,支持資料庫和文本文件和頁面的多種數據源導入。
獲取外部數據
python支持從多種類型的數據導入。在開始使用python進行數據導入前需要先導入pandas庫,為了方便起見,我們也同時導入numpy庫。
1importnumpyasnp
2importpandasaspd
導入數據表
下面分別是從excel和csv格式文件導入數據並創建數據表的方法。代碼是最簡模式,裡面有很多可選參數設置,例如列名稱,索引列,數據格式等等。感興趣的朋友可以參考pandas的
官方文檔。
1df=pd.DataFrame(pd.read_csv(『name.csv』,header=1))
2df=pd.DataFrame(pd.read_excel(『name.xlsx』))
創建數據表
另一種方法是通過直接寫入數據來生成數據表,excel中直接在單元格中輸入數據就可以,python中通過下面的代碼來實現。生成數據表的函數是pandas庫中的DateFrame函數,數據表一共有6行數據,每行有6個欄位。在數據中我們特意設置了一些NA值和有問題的欄位,例如包含空格等。後面將在數據清洗步驟進行處理。後面我們將統一以DataFrame的簡稱df來命名數據表。
1df=pd.DataFrame({『id』:[1001,1002,1003,1004,1005,1006],
2『date』:pd.date_range(『20130102』,periods=6),
3『city』:['Beijing',『SH』,』guangzhou',『Shenzhen』,『shanghai』,'BEIJING'],
4『age』:[23,44,54,32,34,32],
5『category』:[『100-A』,『100-B』,『110-A』,『110-C』,『210-A』,『130-F』],
6『price』:[1200,np.nan,2133,5433,np.nan,4432]},
7columns=[『id』,『date』,『city』,『category』,『age』,『price』])
這是剛剛創建的數據表,我們沒有設置索引列,price欄位中包含有NA值,city欄位中還包含了一些臟數據。
數據表檢查
python中處理的數據量通常會比較大,所以就需要我們對數據表進行檢查。比如我們之前的文章中介紹的紐約計程車數據和Citibike的騎行數據,數據量都在千萬級,我們無法一目瞭然的了解數據表的整體情況,必須要通過一些方法來獲得數據表的關鍵信息。數據表檢查的另一個目的是了解數據的概況,例如整個數據表的大小,所佔空間,數據格式,是否有空值和重復項和具體的數據內容。為後面的清洗和預處理做好准備。
數據維度(行列)
Excel中可以通過CTRL向下的游標鍵,和CTRL向右的游標鍵來查看行號和列號。Python中使用shape函數來查看數據表的維度,也就是行數和列數,函數返回的結果(6,6)表示數據表有6行,6列。下面是具體的代碼。
1#查看數據表的維度
2df.shape
3(6,6)
數據表信息
使用info函數查看數據表的整體信息,這里返回的信息比較多,包括數據維度,列名稱,數據格式和所佔空間等信息。
1#數據表信息
2df.info()
4class『pandas.core.frame.DataFrame』
5RangeIndex:6entries,0to5
6Datacolumns(total6columns):
7id6non-nullint64
8date6non-nulldatetime64[ns]
9city6non-nullobject
10category6non-nullobject
11age6non-nullint64
12price4non-nullfloat64
13dtypes:datetime64ns,float64(1),int64(2),object(2)
14memoryusage:368.0bytes
查看數據格式
Excel中通過選中單元格並查看開始菜單中的數值類型來判斷數據的格式。Python中使用dtypes函數來返回數據格式。
Dtypes是一個查看數據格式的函數,可以一次性查看數據表中所有數據的格式,也可以指定一列來單獨查看。
1#查看數據表各列格式
2df.dtypes
3
4idint64
5datedatetime64[ns]
6cityobject
7categoryobject
8ageint64
9pricefloat64
10dtype:object
11
12#查看單列格式
13df[『B』].dtype
14
15dtype(『int64』)
查看空值
Excel中查看空值的方法是使用「定位條件」功能對數據表中的空值進行定位。「定位條件」在「開始」目錄下的「查找和選擇」目錄中。
Isnull是Python中檢驗空值的函數,返回的結果是邏輯值,包含空值返回True,不包含則返回False。可以對整個數據表進行檢查,也可以單獨對某一列進行空值檢查。
df_isnull
1#檢查特定列空值
2df[『price』].isnull()
3
40False
51True
62False
73False
84True
95False
10Name:price,dtype:bool
查看唯一值
Excel中查看唯一值的方法是使用「條件格式」對唯一值進行顏色標記。Python中使用unique函數查看唯一值。
Unique是查看唯一值的函數,只能對數據表中的特定列進行檢查。下面是代碼,返回的結果是該列中的唯一值。類似與Excel中刪除重復項後的結果。
1#查看city列中的唯一值
2df[『city』].unique()34array(['Beijing',『SH』,』guangzhou',『Shenzhen』,『shanghai』,'BEIJING'],dtype=object)
查看數據表數值
Python中的Values函數用來查看數據表中的數值。以數組的形式返回,不包含表頭信息。
1#查看數據表的值
2df.values
3
4array([[1001,Timestamp(『2013-01-0200:00:00』),'Beijing',『100-A』,23,
51200.0],
6[1002,Timestamp(『2013-01-0300:00:00』),『SH』,『100-B』,44,nan],
7[1003,Timestamp(『2013-01-0400:00:00』),』guangzhou',『110-A』,54,
82133.0],
9[1004,Timestamp(『2013-01-0500:00:00』),『Shenzhen』,『110-C』,32,
105433.0],
11[1005,Timestamp(『2013-01-0600:00:00』),『shanghai』,『210-A』,34,
12nan],
13[1006,Timestamp(『2013-01-0700:00:00』),'BEIJING',『130-F』,32,
144432.0]],dtype=object)
查看列名稱
Colums函數用來單獨查看數據表中的列名稱。
1#查看列名稱
2df.columns
3
4Index([『id』,『date』,『city』,『category』,『age』,『price』],dtype=『object』)
查看前10行數據
Head函數用來查看數據表中的前N行數據,默認head()顯示前10行數據,可以自己設置參數值來確定查看的行數。下面的代碼中設置查看前3行的數據。
1#查看前3行數據``df.head(``3``)
Tail行數與head函數相反,用來查看數據表中後N行的數據,默認tail()顯示後10行數據,可以自己設置參數值來確定查看的行數。下面的代碼中設置查看後3行的數據。
1#查看最後3行df.tail(3)
結語:以上就是首席CTO筆記為大家介紹的關於python獲取資料庫數據一共有多少行的全部內容了,希望對大家有所幫助,如果你還想了解更多這方面的信息,記得收藏關注本站。
③ 如何用python的pandas包的to_csv方法將中文輸出到csv文件中
文本內容如下:
12-06 14:50:23.600: I/ActivityManager(605): Displayed com.suning.numberlocation/.NumberLocationActivity: +125ms
12-06 14:50:52.581: I/ActivityManager(605): Displayed com.suning.numberlocation/.NumberLocationActivity: +126ms
12-06 14:51:21.391: I/ActivityManager(605): Displayed com.suning.numberlocation/.NumberLocationActivity: +108ms
12-06 14:51:50.652: I/ActivityManager(605): Displayed com.suning.numberlocation/.NumberLocationActivity: +121ms
想使用python截取每一行中的特定數據,然後把它們寫入到csv文件中!
想截取每一行中的3段字元串 「numberlocation」 「NumberLocationActivity」 「125」
在CSV中看到的期待結果是(一行輸出3段字元串):
numberlocation NumberLocationActivity 125
④ 怎麼利用pandas做數據分析
Pandas是Python下一個開源數據分析的庫,它提供的數據結構DataFrame極大的簡化了數據分析過程中一些繁瑣操作。
1. 基本使用:創建DataFrame. DataFrame是一張二維的表,大家可以把它想像成一張Excel表單或者Sql表。Excel 2007及其以後的版本的最大行數是1048576,最大列數是16384,超過這個規模的數據Excel就會彈出個框框「此文本包含多行文本,無法放置在一個工作表中」。Pandas處理上千萬的數據是易如反掌的sh事情,同時隨後我們也將看到它比SQL有更強的表達能力,可以做很多復雜的操作,要寫的code也更少。
說了一大堆它的好處,要實際感觸還得動手碼代碼。首要的任務就是創建一個DataFrame,它有幾種創建方式:
(1)列表,序列(pandas.Series), numpy.ndarray的字典
二維numpy.ndarray
別的DataFrame
結構化的記錄(structured arrays)
(2)其中,二維ndarray創建DataFrame,代碼敲得最少:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4))
df
0 1 2 3
0 0.927474 0.127571 1.655908 0.570818
1 -0.425084 -0.382933 0.468073 -0.862898
2 -1.602712 -0.225793 -0.688641 1.167477
3 -1.771992 -0.692575 -0.693494 -1.063697
4 -0.456724 0.371165 1.883742 -0.344189
5 1.024734 0.647224 1.134449 0.266797
6 1.247507 0.114464 2.271932 -0.682767
7 -0.190627 -0.096997 -0.204778 -0.440155
8 -0.471289 -1.025644 -0.741181 -1.707240
9 -0.172242 0.702187 -1.138795 -0.112005
(3)通過describe方法,可以對df中的數據有個大概的了解:
df.describe()
0 1 2 3
count 10.000000 10.000000 10.000000 10.000000
mean -0.189096 -0.046133 0.394722 -0.320786
std 1.027134 0.557420 1.258019 0.837497
min -1.771992 -1.025644 -1.138795 -1.707240
25% -0.467648 -0.343648 -0.692281 -0.817865
50% -0.307856 0.008734 0.131648 -0.392172
75% 0.652545 0.310266 1.525543 0.172096
max 1.247507 0.702187 2.271932 1.167477
2. 改變cell。
3. group by。
4. 讀寫文件。