第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
5.4 創(chuàng)建集合

>>> x = set()>>> x{}創(chuàng)建一個(gè)空的集合>>> iterable = ('a', 'b', 'c')>>> x = list(iterable)>>> x{'a', 'b', 'c'}創(chuàng)建一個(gè)可迭代對(duì)象 iterable,iterable 是一個(gè)包含 3 個(gè)元素的元組通過 set(iterable) 將可迭代對(duì)象 iterable 轉(zhuǎn)換為 set

3.2 修改某區(qū)域數(shù)據(jù)值

我們還可以對(duì)某些行或列的數(shù)據(jù)進(jìn)行統(tǒng)一的修改操作,這里我們可以使用函數(shù) loc() 或 iloc() ,只是要注意傳入的參數(shù)不同。下面我們使用 iloc() 修改整行或整列的數(shù)據(jù)操作:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 ---編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 這里我們創(chuàng)建了一個(gè)新的數(shù)據(jù)集data_new= pd.DataFrame([["11","22","33.5","44"], ["55","66","77.7","88"]], columns=["編程語言","推出時(shí)間","價(jià)格","主要?jiǎng)?chuàng)始人"])data.iloc[[0,1]]=data_newprint(data)# --- 輸出結(jié)果 ---編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 11 22 33.5 441 55 66 77.7 882 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75 Bjarne Stroustrup輸出解析:我們創(chuàng)建了一個(gè)新的數(shù)據(jù)集,用來替換原數(shù)據(jù)第1行和第2行的數(shù)據(jù),通過輸出結(jié)果可以看到被修改后的數(shù)據(jù)集。下面我們來修改一整列的數(shù)據(jù):# 創(chuàng)建了一個(gè)Series對(duì)象new_series=pd.Series(["11","22","3","44","55","66"] )data.iloc[:,[1]]=new_seriesprint(data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 11 45.6 James Gosling1 python 22 67.0 Guido van Rossum2 C 3 33.9 Dennis MacAlistair Ritchie3 js 44 59.5 Brendan Eich4 php 55 69.9 Rasmus Lerdorf5 C++ 66 75.0 Bjarne Stroustrup輸出解析:這里我們新建一個(gè) Series 對(duì)象用來替換第二列的數(shù)據(jù)值,通過輸出結(jié)果可以看到為我們第二列的數(shù)據(jù)值被修改的結(jié)果。

5.1 read_sql() 函數(shù)

該函數(shù)主要從數(shù)據(jù)庫中讀取數(shù)據(jù)幀,里面提供了一些參數(shù)可以設(shè)置,下面列舉常用的幾個(gè)參數(shù):參數(shù)名稱描述sql要執(zhí)行的 sql 語句con數(shù)據(jù)庫連接對(duì)象params參數(shù)的傳遞index_col選擇某一列作為 index參數(shù) sql 和參數(shù) con我們首先通過代碼演示這兩個(gè)參數(shù)的設(shè)置,讀取 example 數(shù)據(jù)庫中的 t_file 數(shù)據(jù)表數(shù)據(jù):# 導(dǎo)入pandas 和 pymysql 包import pandas as pdimport pymysql# 返回一個(gè) Connection 對(duì)象db_conn = pymysql.connect(host='localhost',port=3306,user='root',password='0508',database='example',charset='utf8')# 執(zhí)行sql操作sql="select * from t_file"pd.read_sql(sql,con=db_conn)# --- 輸出結(jié)果 --- id directory fileName md5 size time type0 1 C:/temp-rainy1 匯報(bào).png 845a500eca6ef877 22507 2020-01-16 10:53:02 png1 2 C:/temp-rainy2 模板.png 845a500eca6ef877 22507 2020-01-16 10:59:16 png2 3 C:/temp-rainy3 說明書.docx 5626d69f9f39d65d 235999 2020-01-16 10:59:45 docx3 4 C:/temp-rainy4 接口及調(diào)用說明.rar 459e008250ccb9ca1 391542 2020-01-16 11:02:07 rar4 5 C:/temp-rainy5 數(shù)據(jù)說明.pdf 333052beda8773 434439 2020-01-16 13:44:03 pdf輸出解析:我們通過 sql 語句設(shè)置數(shù)據(jù)庫操作語句,這里我們是查詢 t_file 的所有數(shù)據(jù),參數(shù) con 中我們傳入了 PyMySQL 庫創(chuàng)建的 db_con 數(shù)據(jù)庫連接對(duì)象。通過輸出結(jié)果可以看到,查出了 t_file 中的數(shù)據(jù)內(nèi)容。參數(shù) params該參數(shù)用于我們執(zhí)行 sql 中參數(shù)的配置:# 導(dǎo)入pandas 和 pymysql 包import pandas as pdimport pymysql# 返回一個(gè) Connection 對(duì)象db_conn = pymysql.connect(host='localhost',port=3306,user='root',password='0508',database='example',charset='utf8')# 執(zhí)行sql操作sql = "select * from t_file where id = %s"pd.read_sql(sql,con=db_conn,params=[2])# --- 輸出結(jié)果 --- id directory fileName md5 size time type0 2 C:/temp-rainy2 模板.png 845a500eca6ef877 22507 2020-01-16 10:59:16 png輸出解析:我們 sql 查詢語句中設(shè)置了 id 的參數(shù)條件,在 read_sql() 函數(shù)中我們通過 params 參數(shù)設(shè)置了 id 的條件為 2,因此看到我們的數(shù)據(jù)結(jié)果,正是我們數(shù)據(jù)庫中 id=2 的數(shù)據(jù)行。參數(shù) index_col通過該參數(shù)的設(shè)置,某一列指定為行索引。# 導(dǎo)入pandas 和 pymysql 包import pandas as pdimport pymysql# 返回一個(gè) Connection 對(duì)象db_conn = pymysql.connect(host='localhost',port=3306,user='root',password='0508',database='example',charset='utf8')# 執(zhí)行sql操作sql = "select * from t_file"pd.read_sql(sql,con=db_conn,index_col="type")# --- 輸出結(jié)果 --- id directory fileName md5 size timetype png 1 C:/temp-rainy1 匯報(bào).png 845a500eca6ef877 22507 2020-01-16 10:53:02png 2 C:/temp-rainy2 模板.png 845a500eca6ef877 22507 2020-01-16 10:59:16docx 3 C:/temp-rainy3 說明書.docx 5626d69f9f39d65d 235999 2020-01-16 10:59:45rar 4 C:/temp-rainy4 接口及調(diào)用說明.rar 459e008250ccb9ca1 391542 2020-01-16 11:02:07pdf 5 C:/temp-rainy5 數(shù)據(jù)說明.pdf 333052beda8773 434439 2020-01-16 13:44:03輸出解析:程序中我們通過設(shè)置 index_col=“type” ,指定字段文件的類型 (type) 作為我們數(shù)據(jù)行的索引,這里可以看到輸出結(jié)果,最左側(cè)的一列正式我們的 type 數(shù)據(jù)列,如果不指定 index_col ,默認(rèn)的行索引是從0開始進(jìn)行序號(hào)遞增編排。

2.1 刪除指定的行

# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 刪除指定行 等價(jià)于drop(labels=[0,1],axis=0)data_res=data.drop(labels=[1,3])print(data_res)print(data)# --- 輸出結(jié)果 ---# --- data_res的數(shù)據(jù)集 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling2 C 1972年 33.9 Dennis MacAlistair Ritchie4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# --- data的數(shù)據(jù)集 ---- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup輸出解析:我們通過 drop() 方法的 labels 設(shè)置了標(biāo)簽為 1 和 3,默認(rèn)是 axis=0 則對(duì)應(yīng)的是刪除行索引為 1 和 3 的行數(shù)據(jù),如果 axis=0 是刪除行數(shù)據(jù)而設(shè)置的 labels 對(duì)應(yīng)的不是行索引標(biāo)簽,則刪除時(shí)會(huì)報(bào)錯(cuò),這里可以看到輸出結(jié)果正是刪除了行索引為1和3的兩行數(shù)據(jù)。這里值得注意的是:在執(zhí)行刪除操作后我們?cè)俅未蛴×嗽?data 數(shù)據(jù)集,通過輸出可以看到,data 的數(shù)據(jù)并沒有被影響到,還是完整的數(shù)據(jù)集。這里如果我們的 inplace 參數(shù)設(shè)置了 True,則對(duì)應(yīng)的刪除操作后,原數(shù)據(jù)就會(huì)被修改,通過下面的代碼可以看到操作效果:# 刪除指定行 等價(jià)于drop(labels=[0,1],axis=0)data_res=data.drop(labels=[1,3],axis=0,inplace=True )print(data_res)print(data)# --- 輸出結(jié)果 ---None 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling2 C 1972年 33.9 Dennis MacAlistair Ritchie4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup輸出解析:這里可以看到 data_res 的輸出結(jié)果為 None ,而 data 原數(shù)據(jù)集則被刪除了1和3的索引行。這是因?yàn)楫?dāng)我們?cè)O(shè)置了 inplace=True 時(shí),drop() 操作后就不會(huì)返回一個(gè)新的數(shù)據(jù)集,而是在原數(shù)據(jù)集的基礎(chǔ)上進(jìn)行了操作,在實(shí)際應(yīng)用中,如果不是特別的需要,建議不要指定該參數(shù)為 True,不然會(huì)改變?cè)袛?shù)據(jù)對(duì)其他的分析產(chǎn)生一定的影響。

2.2 read_csv()函數(shù)

read_csv() 函數(shù)為 Pandas 讀取 txt、csv 數(shù)據(jù)文件提供了強(qiáng)力的支持,該函數(shù)含有四五十個(gè)參數(shù),默認(rèn)是 從文件、URL、文件新對(duì)象中加載帶有分隔符的數(shù)據(jù),默認(rèn)分隔符是逗號(hào)。下面我們列舉出它最常用的幾個(gè)參數(shù)。參數(shù)名稱描述filepath_or_buffer可以是url,類型包括(http, ftp, s3和文件),比如上面我們 pandasDataDemo.txt 文件的位置為:C:\Users\13965\Documents\myFuture\IMOOC\pandasCourse-progress\data_source\pandasDataDemo.txt ,如果不指定類型,默認(rèn)是 file 類型sep指定數(shù)據(jù)的分隔符,默認(rèn)是 “,”header指定數(shù)據(jù)的從第幾行解析,默認(rèn)是文件數(shù)據(jù)的第1行,header=0,如果不用文件中的某行作為列名,要寫上 header=Nonenames指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]nrows指定數(shù)據(jù)文件中讀取多少行的數(shù)據(jù),從數(shù)據(jù)第一行開始skiprows指定忽略的行數(shù),從數(shù)據(jù)文件頭開始skipfooter指定忽略的行數(shù),從文件的尾部開始(c引擎不支持)encoding指定數(shù)據(jù)解析時(shí),字符的集類型,通常指定為 “utf-8”engine指定數(shù)據(jù)分析的引擎,默認(rèn)是 c,c 引擎雖然快但是 Python 引擎的功能更多。na_filter是否檢查缺失值(空字符串或者是空值),當(dāng)數(shù)據(jù)文件較大時(shí),并且很少有缺失值,設(shè)置 na_filter=False能有效的提升讀取的速度

3. 通道結(jié)合 select 流程控制

在 Go 語言中為了更方便的利用通道的功能,提供了一個(gè)僅用于通道的流程控制語句:select...case。使用這個(gè)語句可以同時(shí)監(jiān)聽數(shù)個(gè)通道,非常適合用于并發(fā)時(shí)的進(jìn)程調(diào)度,或者模塊之間的解耦合。這些在后續(xù)的文章中會(huì)有詳細(xì)介紹,下面通過一個(gè)簡單的例子來了解一下 select...case 語句。代碼示例:package mainimport "fmt"func main() { c := make(chan int, 1) for a := 0; a < 2; a++ { select { case i := <-c: fmt.Println("從通道中取出", i) case c <- 10: fmt.Println("將 10 塞入通道中") } }}第 8 行:寫一個(gè)兩次的循環(huán),若是在多線程中,一般寫成死循環(huán);第 9 行:select 關(guān)鍵字做為 select 語句的起始;第 10 行:若 c 通道中存在數(shù)據(jù),則取出,并執(zhí)行后續(xù)語句;第 12 行:若通道未滿,將 10 塞入通道中。Tips:select 語句和 switch 語句一樣,case 都只會(huì)執(zhí)行一個(gè),然后立刻跳出語句執(zhí)行結(jié)果:

3. 不同類型的 nil 的長度不同

不同類型的變量的內(nèi)存分配都是不同的,即使是 nil ,分配的內(nèi)存也是不同的。代碼示例:package mainimport ( "fmt" "unsafe")func main() { var m map[int]string var p *int var c chan int var s []int var f func() var i interface{} fmt.Println("map:", unsafe.Sizeof( m )) fmt.Println("指針:", unsafe.Sizeof(p)) fmt.Println("通道:", unsafe.Sizeof(c)) fmt.Println("切片:", unsafe.Sizeof(s)) fmt.Println("函數(shù):", unsafe.Sizeof(f)) fmt.Println("接口:", unsafe.Sizeof(i))}執(zhí)行結(jié)果:

4. 為什么要學(xué)習(xí) NumPy ?

Numpy 是基于 C 語言開發(fā),因此繼承了 C 語言運(yùn)算速度快、消耗資源少等優(yōu)點(diǎn),并且 Numpy 被廣泛應(yīng)用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域,因此掌握 Numpy 對(duì)能力提升和職場晉升的重要性不言而喻。

2.3 輸出日志文件

控制臺(tái)日志保存的內(nèi)容十分有限,大多數(shù)情況下我們需要將日志寫入文件,便于追溯??梢酝ㄟ^配置文件指定日志文件,如下配置會(huì)將日志打印到 C:\\logs\\spring-boot-log.log 文件中。實(shí)例:# 設(shè)置日志文件logging.file=C:\\logs\\spring-boot-log.log也可以指定日志文件輸出的目錄, Spring Boot 項(xiàng)目會(huì)在指定輸出目錄下新建 spring.log 文件,并在文件中寫入日志。實(shí)例:# 設(shè)置日志目錄logging.path=C:\\logsTips:如果同時(shí)配置了 logging.file 和 ogging.path ,則只有 logging.file 生效。

3. 使用場景及應(yīng)用實(shí)例

時(shí)序圖作為展示對(duì)象交互順序的工具,可以更直觀的描述順序及并發(fā)過程。實(shí)例 9:學(xué)生使用教務(wù)系統(tǒng)時(shí)序圖展示。sequenceDiagram participant a as 學(xué)生 participant b as 教務(wù)系統(tǒng) participant c as 課程 participant d as 成績 opt 認(rèn)證 a->>b: 用戶名/密碼 end a->>+b: 請(qǐng)求課程列表 b->>+c: 獲取課程列表 c-->>-b: 返回課程列表 b->>+d: 獲取成績信息 d-->>-b: 返回成績信息 b-->>-a: 顯示成績其渲染效果如下:

1. 聲明 <code>enum</code>

聲明一個(gè)枚舉類型,可以采用關(guān)鍵字 enum 加上一個(gè)自定義的名稱,再加上一系列的枚舉值。enum Score{ A = 5, B = 4, C = 3, D = 2, E = 1, F = 0};當(dāng)讓你也可以采用其默認(rèn)值,默認(rèn)情況下,枚舉的數(shù)值是整數(shù) 0 開始的,然后遞加 1 。enum Score{F, E, D, C, B, A};這個(gè)定義的枚舉和之前介紹的那個(gè)效果是一致的。同時(shí)你還可以采用默認(rèn)值與自定義值混合的方式來定義一個(gè)枚舉。enum Score{ E = 1, F, D = 5, C, B = 0, A};在上面的定義中, E 的值為 1 , F 的值為 2 , D 的值為 5 , C 的值為 6 , B 的值為 0 , A 的值為 1 。

4.2 read_excel() 函數(shù)

Pandas 提供了 read_excel() 函數(shù)用于 Excel 數(shù)據(jù)文件的讀取,并為其提供了很多的參數(shù)用于解析 Excel 數(shù)據(jù)的設(shè)置,接下來我們列舉一些該函數(shù)中常用的幾個(gè)參數(shù)設(shè)置:參數(shù)名稱描述io傳入 execl 文件的對(duì)象,字符串可能是一個(gè) URL 包括的類型(http,ftp,s3和文件)sheet_name指定讀取第幾個(gè) sheet 表,默認(rèn)是第一個(gè),sheet_name=None 可以讀取所有的 sheetheader指定哪一行作為列名,如果不需要里面的行作為列名,要寫上 header = Nonenames指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]1. 首先,我們通過 read_excel() 的 io 將 “execl數(shù)據(jù)demo.xlsx ”中的數(shù)據(jù)解析出來:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 主要?jiǎng)?chuàng)始人0 java 1995年 James Gosling1 python 1991年 Guido van Rossum2 C 1972年 Dennis MacAlistair Ritchie3 js 1995年 Brendan Eich4 php 2012年 Rasmus Lerdorf5 C++ 1983年 Bjarne Stroustrup輸出解析:這里是將 Excel 中的第一個(gè)工作表的數(shù)據(jù)解析出來 Excel 中行和列分別解析為行數(shù)據(jù)和列數(shù)據(jù),默認(rèn)第一行作為列名稱。2. 參數(shù) sheet_name該參數(shù)用于設(shè)置讀取 Excel 數(shù)據(jù)中的哪個(gè)工作表,值為工作表名稱,首先我們?cè)?“execl數(shù)據(jù)demo.xlsx” 文件中新增一個(gè)工作表 Sheet2 ,數(shù)據(jù)的內(nèi)容直接從工作表1 中復(fù)制,并為每一項(xiàng)數(shù)據(jù)添加 “_2” 作為區(qū)分:首先我們通過設(shè)置 sheet_name=‘Sheet2’ 來讀取 Sheet2 中的數(shù)據(jù):# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"# 這里我們傳入?yún)?shù) sheet_namedata = pd.read_excel(data_path,sheet_name='Sheet2')print(data)# --- 輸出結(jié)果 ---編程語言_2 推出時(shí)間_2 主要?jiǎng)?chuàng)始人_20 java_2 1995年_2 James Gosling_21 python_2 1991年_2 Guido van Rossum_22 C_2 1972年_2 Dennis MacAlistair Ritchie_23 js_2 1995年_2 Brendan Eich_24 php_2 1996年_2 Rasmus Lerdorf_25 C++_2 1997年_2 Bjarne Stroustrup_2輸出解析:這里可以看到解析的數(shù)據(jù)為 Sheet2 中的數(shù)據(jù)內(nèi)容。接下來我們?cè)O(shè)置 sheet_name=None ,來解析所有工作表的數(shù)據(jù):# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"# 這里我們傳入?yún)?shù) sheet_namedata = pd.read_excel(data_path,sheet_name=None)print(data)# --- 輸出結(jié)果 ---{'Sheet1': 編程語言 推出時(shí)間 主要?jiǎng)?chuàng)始人0 java 1995年 James Gosling1 python 1991年 Guido van Rossum2 C 1972年 Dennis MacAlistair Ritchie3 js 1995年 Brendan Eich4 php 2012年 Rasmus Lerdorf5 C++ 1983年 Bjarne Stroustrup, 'Sheet2': 編程語言_2 推出時(shí)間_2 主要?jiǎng)?chuàng)始人_20 java_2 1995年_2 James Gosling_21 python_2 1991年_2 Guido van Rossum_22 C_2 1972年_2 Dennis MacAlistair Ritchie_23 js_2 1995年_2 Brendan Eich_24 php_2 1996年_2 Rasmus Lerdorf_25 C++_2 1997年_2 Bjarne Stroustrup_2}輸出解析:可以看到輸出結(jié)果是將 Sheet1 和 Sheet2 的數(shù)據(jù)都進(jìn)行了解析,格式是字典形式,工作表名為 key,值是解析的工作表的數(shù)據(jù)值。3. 參數(shù) headerheader 參數(shù)用于指定哪一行作為列名:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"# 這里我們傳入?yún)?shù) header data = pd.read_excel(data_path,header =2)print(data)# ---輸出結(jié)果--- python 1991年 Guido van Rossum0 C 1972年 Dennis MacAlistair Ritchie1 js 1995年 Brendan Eich2 php 2012年 Rasmus Lerdorf3 C++ 1983年 Bjarne Stroustrup輸出解析:這里可以看到將第二行的數(shù)據(jù)解析為列名,并從改行詳細(xì)繼續(xù)解析數(shù)據(jù)。4. 參數(shù) namesnames 用于手動(dòng)傳入列名的值:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"# 這里我們傳入?yún)?shù) header data = pd.read_excel(data_path,names =["a1","a2","a3"])print(data)# ---輸出結(jié)果--- a1 a2 a30 java 1995年 James Gosling1 python 1991年 Guido van Rossum2 C 1972年 Dennis MacAlistair Ritchie3 js 1995年 Brendan Eich4 php 2012年 Rasmus Lerdorf5 C++ 1983年 Bjarne Stroustrup輸出解析:這里手動(dòng)傳入了列的名稱為 a1 , a2 , a3。

2.2 匹配指定幾個(gè)字符或范圍字符

我們使用[],來匹配幾個(gè)指定字符或者范圍的字符。匹配所有帶a、b、c的字符串。實(shí)例:def contains_abc(str) str =~ /[abc]/endcontains_abc('test')contains_abc('bell')contains_abc('apple')# ---- 輸出結(jié)果 ----nil00匹配a~c的所有字符(abc)。實(shí)例:def contains_abc(str) str =~ /[a-c]/endcontains_abc('test')contains_abc('bell')contains_abc('apple')# ---- 輸出結(jié)果 ----nil00解釋:上述的例子表示,[a-c]和[abc]代表一樣的內(nèi)容。Tips:同樣的[1-5]也代表[12345]。另外我們還有一個(gè)取反的操作。使用^。實(shí)例:def contains_abc(str) str =~ /[^a-c]/endcontains_abc('test')contains_abc('bell')contains_abc('apple')# ---- 輸出結(jié)果 ----011解釋:test第一個(gè)字符是t,符合不是a、b、c的正則所以返回索引0,bell的第一個(gè)字符b不匹配正則,而e匹配,所以返回索引1,apple的第一個(gè)字符a不匹配正則,p匹配,所以返回1。這些是常用匹配范圍字符的正則:方法時(shí)機(jī)簡介(調(diào)用的時(shí)機(jī))\w同:[0-9a-zA-Z_]\d同:[0-9]\s同:匹配空格、制表符、換行符。\W同:[^0-9a-zA-Z_]\D同:[^0-9]\S同:不是空格、制表符、換行符。.可以匹配任意字符。.可以匹配任意字符,\.僅可以匹配.字符。實(shí)例:p "6b6" =~ /\d.\d/p "6b6" =~ /\d\.\d/p "6.6" =~ /\d\.\d/# ---- 輸出結(jié)果 ----0nil0

2.2 基本使用

var obj = {a: 1, b: 2, c: 3};Object.values(obj) // [1, 2, 3]

3.2 鍵排序問題

上一節(jié) 我們學(xué)習(xí) Object.keys() 會(huì)對(duì)屬性是數(shù)值的鍵進(jìn)行排序,在這個(gè)過程中屬性對(duì)應(yīng)的值也會(huì)跟著改變位置,所有使用 Object.values() 返回的數(shù)組是按 Object.keys() 順序后的結(jié)果展示的,所以得到的值要和排序后的屬性一一對(duì)應(yīng)。var obj = {10: 'a', 1: 'b', 7: 'c'};Object.values(obj) // ['b', 'c', 'a']

3.6 pip3 show package-name

命令 pip3 show package-name 顯示名稱為 package-name 的第三方模塊的信息,示例如下:C:\> pip3 show requestsName: requestsVersion: 2.23.0Summary: Python HTTP for Humans.Home-page: https://requests.readthedocs.ioAuthor: Kenneth ReitzAuthor-email: me@kennethreitz.orgLicense: Apache 2.0Location: c:\python3\lib\site-packagesRequires: chardet, idna, certifi, urllib3在以上信息中,requires 列出 requests 模塊的依賴的模塊:chardet、idna、certifi、urllib3,當(dāng)安裝 requests 模塊時(shí),會(huì)自動(dòng)安裝這 4 個(gè)模塊。

4.RIGHT JOIN 右連接

同樣以表 course 和 teacher 右連接為例:SELECT c.id AS course_id,c.*,t.* FROM course c RIGHT JOIN teacher t ON c.teacher_id=t.id;執(zhí)行結(jié)果如下圖:Tips:RIGHT JOIN 為右連接,是以右邊的表為’基準(zhǔn)’,若左表沒有對(duì)應(yīng)的值,用 NULL 來填補(bǔ)。

3.2 修改某類數(shù)據(jù)值

有時(shí)候我們需要對(duì)數(shù)據(jù)集中的一類數(shù)據(jù)進(jìn)行修改,比如我們要將所有的“1995年”換成字符串“2000年”,這時(shí)我們就需要用到函數(shù) replace(to_replace=None,value=None……),該函數(shù)的兩個(gè)核心參數(shù) to_replace 表示要被替換的數(shù)據(jù),value 是替換后的數(shù)據(jù),該函數(shù)修改后,會(huì)返回新的數(shù)據(jù)集,不會(huì)影響到原數(shù)據(jù)。# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 這里我們對(duì) 將所有的“1995年”數(shù)據(jù)修改為“2000年”new_data=data.replace("1995年","2000年")print(new_data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 2000年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 2000年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup輸出解析:這里可以看到原數(shù)據(jù)中所有的“1995年”都被改成了“2000年”。這里我們要被修改的值也可以傳入列表的形式,指定多個(gè)被修改的數(shù)據(jù)值,如下面代碼所示:# 這里我們傳入list數(shù)據(jù)集,對(duì)這幾個(gè)數(shù)據(jù)進(jìn)行修改為“2000年”new_data=data.replace(["1995年","2012年","1983年"],"2000年")print(new_data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 2000年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 2000年 59.5 Brendan Eich4 php 2000年 69.9 Rasmus Lerdorf5 C++ 2000年 75.0 Bjarne Stroustrup輸出解析:通過輸出結(jié)果可以看到,原數(shù)據(jù)集中的1995年,2012年,1983年都被修改為了“2000年”。

1. 概述

我們可以向 Android 項(xiàng)目添加 C 和 C++ 代碼,只需將相應(yīng)的代碼添加到項(xiàng)目模塊的 cpp 目錄中即可。在我們構(gòu)建項(xiàng)目時(shí),這些代碼會(huì)編譯到一個(gè)可由 Gradle 與我們的 APK 打包在一起的原生庫中。然后,Java 代碼即可通過 Java 原生接口 (JNI) 調(diào)用原生庫中的函數(shù)。Android Studio 支持適用于跨平臺(tái)項(xiàng)目的 CMake,以及速度比 CMake 更快但僅支持 Android 的 ndk-build。目前不支持在同一模塊中同時(shí)使用 CMake 和 ndk-build。要為我們的應(yīng)用編譯和調(diào)試原生代碼,我們需要以下組件:Android 原生開發(fā)套件 (NDK):一個(gè)工具集,讓我們能夠在 Android 項(xiàng)目中使用 C 和 C++ 代碼;它提供了各種平臺(tái)庫,讓我們能夠管理原生 Activity 并訪問物理設(shè)備組件,例如傳感器和輕觸輸入。CMake:一款外部編譯工具,可與 Gradle 搭配使用來編譯原生庫。如果我們只計(jì)劃使用 ndk-build,則不需要此組件。LLDB:Android Studio 用于調(diào)試原生代碼的調(diào)試程序。默認(rèn)情況下,LLDB 將與 Android Studio 一起安裝。

3.2 CSV 數(shù)據(jù)文件的讀取

Pandas 讀取 CSV 文件用的也是 read_csv()函數(shù),解析數(shù)據(jù)是默認(rèn)的使用 “,” 進(jìn)行劃分列,當(dāng)然對(duì)應(yīng)的參數(shù)也是適用的,這里我們就不一一贅述,我們演示一下讀取 csv 文件數(shù)據(jù)。# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/CSV數(shù)據(jù)Demo.csv"# 這里我們指定解析引擎為 pythondata = pd.read_csv(data_path, engine='python')print(data)# ---輸出結(jié)果--- 編程語言 推出時(shí)間 主要?jiǎng)?chuàng)始人0 java 1995年 James Gosling1 python 1991年 Guido van Rossum2 C 1972年 Dennis MacAlistair Ritchie3 js 1995年 Brendan Eich4 php 2012年 Rasmus Lerdorf5 C++ 1983年 Bjarne Stroustrup

4.2 os.path.isfile(path)

操作系統(tǒng)中,常見的文件類型有兩種:普通文件文本文件或者二進(jìn)制數(shù)據(jù)文件被稱為普通文件目錄文件os.path.isfile(path) 判斷文件是否為普通文件,該函數(shù)的使用示例:>>> import os>>> os.path.isfile('C:\\Windows\\notepad.exe')True>>> os.path.isfile('C:\\Windows')False

2.5 迭代 Set 和 Map

在 Set 和 Map 章節(jié)中我們就說到了,Set 和 Map 可以使用 for...of 來進(jìn)行循環(huán),主要因?yàn)?Set 和 Map 具有可迭代屬性。let setArr = new Set([1, 1, 2, 2, 3, 3]);for (let value of setArr) { console.log(value);}// 1// 2// 3上面的代碼需要注意的是,迭代的是 new Set() 后的結(jié)果,new Set() 會(huì)對(duì)數(shù)組進(jìn)行去重操作,所以得到以上結(jié)果。let map = new Map([["a", 1], ["b", 2], ["c", 3]]);for (let value of map) { console.log(value);}// ["a", 1]// ["b", 2]// ["c", 3]上面的代碼中使用 new Map() 傳入一個(gè)二維數(shù)組,這里需要注意的是,迭代的結(jié)果是一個(gè)帶有 key 和 value 的數(shù)組,所以也可以用數(shù)組解構(gòu)的方式 把 key 和 value 的值取出來,直接使用:for (let [key, value] of map) { console.log(key, value);}// a 1// b 2// c 3

1.2 numpy.savez 函數(shù)

numpy.savez 函數(shù)可以將多個(gè)數(shù)組保存到以 npz 為擴(kuò)展名的文件中。函數(shù)原型如下是:numpy.savez(file, *args, **kwds)參數(shù)說明如下:參數(shù)說明file要保存的文件,擴(kuò)展名為 .npy,如果文件路徑末尾沒有擴(kuò)展名 .npy,該擴(kuò)展名會(huì)被自動(dòng)加上args要保存的數(shù)組kwds要保存的數(shù)組使用關(guān)鍵字名稱案例定義數(shù)組:b = np.array([11, 22, 33, 44, 55, 66]) c = np.array([10, 20, 30, 40, 50, 60]) 將數(shù)組 a、b、c 保存到 outfile_abc.npz 文件上:np.savez('outfile_abc.npz', a, b, arr_1d = c)

2. 小結(jié)

對(duì)于 C 語言的注釋,這里有兩種方式:多行注釋(經(jīng)典式注釋)單行注釋(C++ 式注釋)經(jīng)典式可以注釋多行,使用 /* */ 來進(jìn)行注釋,而 C++ 式的注釋提供了更為便捷的注釋方式,只能注釋單行,使用 // 進(jìn)行注釋。大家可以根據(jù)實(shí)際需要選擇。但是要切記,作為一個(gè)程序員良好的素養(yǎng)就是做好注釋。沒有注釋的程序是不完整的程序,因?yàn)槌绦蜷喿x的對(duì)象是人。

2. 鏡像構(gòu)建過程

我們執(zhí)行 docker build --network=host -t ubuntu-nginx:v1 . 命令,看看在構(gòu)建過程中做了哪些操作:[user@centos8 nginx]$ docker build --network=host -t ubuntu-nginx:v1 .# 將上下文求發(fā)送給Docker引擎Sending build context to Docker daemon 2.56kB# 下載依賴的鏡像Step 1/7 : FROM ubuntulatest: Pulling from library/ubuntud51af753c3d3: Pull completefc878cd0a91c: Pull complete6154df8ff988: Pull completefee5db0ff82f: Pull completeDigest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7Status: Downloaded newer image for ubuntu:latest# 生成鏡像 1d622ef86b13 ---> 1d622ef86b13Step 2/7 : MAINTAINER my_name myemail@domain.com# 運(yùn)行容器 4eec6e3094f0,在容器內(nèi)運(yùn)行上面的這個(gè)命令,標(biāo)記維護(hù)者信息 ---> Running in 4eec6e3094f0# 移除臨時(shí)容器 4eec6e3094f0Removing intermediate container 4eec6e3094f0# 生成鏡像 6679d1c204e3 ---> 6679d1c204e3Step 3/7 : RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list# 運(yùn)行容器84d38c20d8c4,在容器內(nèi)運(yùn)行上面的這個(gè)命令,更換軟件源記錄 ---> Running in 84d38c20d8c4# 移除臨時(shí)容器 84d38c20d8c4Removing intermediate container 84d38c20d8c4# 生成鏡像 83f29f7b055a ---> 83f29f7b055aStep 4/7 : RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list# 運(yùn)行容器 763e4493d93f, 在容器內(nèi)運(yùn)行上面的這個(gè)命令,更換軟件源記錄 ---> Running in 763e4493d93f# 移除臨時(shí)容器 763e4493d93fRemoving intermediate container 763e4493d93f# 生成鏡像 6297f20605d9 ---> 6297f20605d9Step 5/7 : RUN apt update >/dev/null 2>&1# 運(yùn)行容器 2665a7e5a2e9,在容器內(nèi)運(yùn)行上面的這個(gè)命令, 更新軟件源緩存 ---> Running in 2665a7e5a2e9# 移除臨時(shí)容器 2665a7e5a2e9Removing intermediate container 2665a7e5a2e9# 生成鏡像 fdfed940ca4d ---> fdfed940ca4dStep 6/7 : RUN apt install nginx -y >/dev/null 2>&1# 運(yùn)行 容器 722a9a544643,在容器內(nèi)運(yùn)行上面的這個(gè)命令, 安裝nginx ---> Running in 722a9a544643# 移除臨時(shí)容器 722a9a544643Removing intermediate container 722a9a544643# 生成鏡像 6ee76f7df9e5 ---> 6ee76f7df9e5Step 7/7 : EXPOSE 80# 運(yùn)行容器 a12ed3216ee0,在容器內(nèi)運(yùn)行上面的這個(gè)命令, 暴露80端口 ---> Running in a12ed3216ee0# 移除臨時(shí)容器 a12ed3216ee0Removing intermediate container a12ed3216ee0# 生成最終的鏡像 7cf64279ba98 ---> 7cf64279ba98Successfully built 7cf64279ba98# 將這個(gè)鏡像標(biāo)記命名 ubuntu-nginx 版本號(hào)v1Successfully tagged ubuntu-nginx:v1結(jié)合之前講到的 docker commit 命令,不難理解 Dockerfile 就是將我們?cè)谖募袝鴮懙臉?gòu)建指令,一層一層從 FROM 指定的基礎(chǔ)鏡像使用臨時(shí)容器過渡,逐層疊加起來最終生成目標(biāo)鏡像。使用 docker history ubuntu-nginx:v1 命令可以驗(yàn)證我們的想法:[user@centos8 nginx]$ docker history ubuntu-nginx:v1IMAGE CREATED CREATED BY SIZE COMMENT7cf64279ba98 21 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B6ee76f7df9e5 21 minutes ago /bin/sh -c apt install nginx -y >/dev/null 2… 59.2MBfdfed940ca4d 21 minutes ago /bin/sh -c apt update >/dev/null 2>&1 21.4MB6297f20605d9 21 minutes ago /bin/sh -c sed -i 's/security.ubuntu.com/mir… 2.76kB83f29f7b055a 21 minutes ago /bin/sh -c sed -i 's/archive.ubuntu.com/mirr… 2.76kB6679d1c204e3 21 minutes ago /bin/sh -c #(nop) MAINTAINER my_name myemai… 0B1d622ef86b13 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B<missing> 2 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B<missing> 2 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 811B<missing> 2 weeks ago /bin/sh -c [ -z "$(apt-get indextargets)" ] 1.01MB<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:a58c8b447951f9e30… 72.8MB

4. 示例

#include <stdio.h>int main(){ short a[2][2] = {{}, {3, 4}}; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { printf("a[%d][%d] = %d\n", i, j, a[i][j]); } } int b[][2] = {{1, 2}, {3, 4}}; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { printf("b[%d][%d] = %d\n", i, j, b[i][j]); } } int c[3][2][2] = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}, {{9, 10}, {11, 12}}}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { printf("c[%d][%d][%d] = %d\n", i, j, k, c[i][j][k]); } } } return 0;}運(yùn)行結(jié)果:a[0][0] = 0a[0][1] = 0a[1][0] = 3a[1][1] = 4b[0][0] = 1b[0][1] = 2b[1][0] = 3b[1][1] = 4c[0][0][0] = 1c[0][0][1] = 2c[0][1][0] = 3c[0][1][1] = 4c[1][0][0] = 5c[1][0][1] = 6c[1][1][0] = 7c[1][1][1] = 8c[2][0][0] = 9c[2][0][1] = 10c[2][1][0] = 11c[2][1][1] = 12示例程序里面通過 3 種不同的方式初始化了 a、b、c 三個(gè)多維數(shù)組,其中 a 與 b 數(shù)組是 2 維數(shù)數(shù)組,c 是 3 維數(shù)組。這里在初始化數(shù)組的時(shí)候,我們采用通常建議的多層大括號(hào)的組織方式,這種方式雖然使用了更多的括號(hào),但是可讀性會(huì)更強(qiáng),更有條理性。在多維數(shù)組的使用中,會(huì)采用多層的嵌套循環(huán)來進(jìn)行內(nèi)部全部變量的賦值或者取值操作,如果只是想對(duì)于數(shù)組中的某一個(gè)位置上的數(shù)值進(jìn)行修改,只要直接使用其索引位置就可以了,如 a[0][1] = 100 等。

4.2 上線推送

private void login(LoginReqBean bean, Channel channel){ Channel c=map.get(bean.getUserid()); LoginResBean res=new LoginResBean(); if(c==null){ //1.添加到map map.put(bean.getUserid(),channel); //2.給通道賦值 channel.attr(AttributeKey.valueOf("userid")).set(bean.getUserid()); //3.登錄響應(yīng) res.setStatus(0); res.setMsg("登錄成功"); res.setUserid(bean.getUserid()); channel.writeAndFlush(res); //4.根據(jù)user查找是否有尚未推送消息 //思路:根據(jù)userid去lists查找....... }else{ res.setStatus(1); res.setMsg("該賬戶目前在線"); channel.writeAndFlush(res); }}

3.1 例1 笛卡爾積

請(qǐng)書寫 SQL 語句得到imooc_class和imooc_user兩表的笛卡爾積。分析:使用 Select 搭配 Cross Join 得到兩表的笛卡爾積即可。語句:SELECT * FROM imooc_class CROSS JOIN imooc_user;+----+---------------+----+----------+----------+| id | class_name | id | username | class_id |+----+---------------+----+----------+----------+| 1 | SQL必知必會(huì) | 1 | pedro | 1 || 2 | C語言入門 | 1 | pedro | 1 || 3 | JAVA高效編程 | 1 | pedro | 1 || 4 | JVM花落知多少 | 1 | pedro | 1 || 1 | SQL必知必會(huì) | 2 | peter | 1 || 2 | C語言入門 | 2 | peter | 1 || 3 | JAVA高效編程 | 2 | peter | 1 || 4 | JVM花落知多少 | 2 | peter | 1 || 1 | SQL必知必會(huì) | 3 | faker | 2 || 2 | C語言入門 | 3 | faker | 2 || 3 | JAVA高效編程 | 3 | faker | 2 || 4 | JVM花落知多少 | 3 | faker | 2 || 1 | SQL必知必會(huì) | 4 | lucy | 4 || 2 | C語言入門 | 4 | lucy | 4 || 3 | JAVA高效編程 | 4 | lucy | 4 || 4 | JVM花落知多少 | 4 | lucy | 4 || 1 | SQL必知必會(huì) | 5 | jery | <null> || 2 | C語言入門 | 5 | jery | <null> || 3 | JAVA高效編程 | 5 | jery | <null> || 4 | JVM花落知多少 | 5 | jery | <null> |+----+---------------+----+----------+----------+從結(jié)果中可以看出,交叉連接就是將一張表的每一條記錄與另一張表的每一條記錄進(jìn)行連接成為一條新記錄,排列組合完畢后得到兩張表的笛卡爾積。交叉連接還可以通過隱式的連接方式來實(shí)現(xiàn):SELECT * FROM imooc_class,imooc_user;

4.3 判斷對(duì)象是文件還是目錄

我們可以通過如下兩個(gè)方法判斷 File 對(duì)象是文件還是目錄:boolean isFile():測試此抽象路徑名表示的文件是否為普通文件;boolean isDirectory():測試此抽象路徑名表示的文件是否為目錄。實(shí)例如下:import java.io.File;public class FileDemo3 { public static void printResult(File file) { // 調(diào)用isFile()方法并接收布爾類型結(jié)果 boolean isFile = file.isFile(); String result1 = isFile ? "是已存在文件" : "不是已存在文件"; // 掉用isDirectory()方法并接收布爾類型而己過 boolean directory = file.isDirectory(); String result2 = directory ? "是已存在目錄" : "不是已存在目錄"; // 打印該file對(duì)象是否是已存在文件/目錄的字符串結(jié)果 System.out.print(file); System.out.print('\t' + result1 + '\t'); System.out.println(result2); } public static void main(String[] args) { // 傳入目錄絕對(duì)路徑 File dir = new File("C:\\Users\\Colorful\\Desktop\\imooc\\images"); // 傳入文件絕對(duì)路徑 File file = new File("C:\\Users\\Colorful\\Desktop\\imooc\\test.java"); FileDemo3.printResult(dir); FileDemo3.printResult(file); }}運(yùn)行結(jié)果:C:\Users\Colorful\Desktop\imooc\images 不是已存在文件 是已存在目錄C:\Users\Colorful\Desktop\imooc\test.java 不是已存在文件 不是已存在目錄代碼中我們封裝了一個(gè)靜態(tài)方法printResult(),此方法打印 File 對(duì)象是否是文件/目錄。值得注意的是,我們的磁盤中不存在C:\Users\Colorful\Desktop\imooc\test.java,因此無論調(diào)用isFile()方法還是isDirectory()方法,其返回結(jié)果都為false。

3. 查詢方法操作

這里我們通過解析 Excel 數(shù)據(jù)文件,獲得了數(shù)據(jù),具體數(shù)據(jù)解析內(nèi)容如下:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup輸出解析:可以看到解析后的數(shù)據(jù)結(jié)構(gòu)是 DataFrame 的二維數(shù)據(jù)表,有行索引和列索引,接下來我們將通過多種查詢方式,對(duì)該二維數(shù)據(jù)進(jìn)行查詢。

直播
查看課程詳情
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)