Python3中类的高级语法及实战
Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案
Python3数据科学包系列(一):数据分析实战
Python3数据科学包系列(二):数据分析实战
Python3数据科学包系列(三):数据分析实战
国庆中秋宅家自省: Python在Excel中绘图尝鲜
一:通过read_table函数读取数据创建(DataFrame)数据框
# -*- coding:utf-8 -*-from pandas import read_table'''从文件(rz.txt)读取数据创建pandas的DataFrame数据框 ''' print("""注意: (1)txt文本文件要保存成UTF-8格式才不会报错(2)查看数据框dataFrame前n项数据使用dataFrame.head(n);后m项数据用dataFrame.tail(m);默认均是5 """) dataFrame = read_table(r'./file/rz.txt', sep="\t") print("查看前5项数据: ", dataFrame.head(5))print() print("查看后5项数据: ", dataFrame.tail(5)) print() print("查看所有数据") print(dataFrame)
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisByTXTFileCreatePandasOfDataFrame.py
注意:
(1)txt文本文件要保存成UTF-8格式才不会报错
(2)查看数据框dataFrame前n项数据使用dataFrame.head(n);后m项数据用dataFrame.tail(m);默认均是5查看前5项数据: 学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60.0
1 2308024244 23080242 周怡 女 66 91 75 47 47 44.0
2 2308024251 23080242 张波 男 85 81 75 45 45 60.0
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71.0
4 2308024219 23080242 封印 女 73 88 92 61 47 46.0查看后5项数据: 学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
16 2308024433 23080244 李大强 男 79 76 77 78 70 NaN
17 2308024428 23080244 李侧通 男 64 96 91 69 60 NaN
18 2308024402 23080244 王慧 女 73 74 93 70 71 75.0
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 NaN
20 2308024201 23080242 迟培 男 60 50 89 71 76 71.0查看所有数据
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60.0
1 2308024244 23080242 周怡 女 66 91 75 47 47 44.0
2 2308024251 23080242 张波 男 85 81 75 45 45 60.0
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71.0
4 2308024219 23080242 封印 女 73 88 92 61 47 46.0
5 2308024201 23080242 迟培 男 60 50 89 71 76 71.0
6 2308024347 23080243 李华 女 67 61 84 61 65 78.0
7 2308024307 23080243 陈田 男 76 79 86 69 40 69.0
8 2308024326 23080243 余皓 男 66 67 85 65 61 71.0
9 2308024320 23080243 李嘉 女 62 作弊 90 60 67 77.0
10 2308024342 23080243 李上初 男 76 90 84 60 66 NaN
11 2308024310 23080243 郭窦 女 79 67 84 64 64 79.0
12 2308024435 23080244 姜毅涛 男 77 71 缺考 61 73 NaN
13 2308024432 23080244 赵宇 男 74 74 88 68 70 71.0
14 2308024446 23080244 周路 女 76 80 77 61 74 80.0
15 2308024421 23080244 林建祥 男 72 72 81 63 90 NaN
16 2308024433 23080244 李大强 男 79 76 77 78 70 NaN
17 2308024428 23080244 李侧通 男 64 96 91 69 60 NaN
18 2308024402 23080244 王慧 女 73 74 93 70 71 75.0
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 NaN
20 2308024201 23080242 迟培 男 60 50 89 71 76 71.0Process finished with exit code 0
二:通过read_csv|read_table读取csv格式数据创建(DataFrame)数据块
# -*- coding:utf-8 -*-from pandas import read_csv, read_table'''从文件(rz.cvs)读取数据创建pandas的DataFrame数据框 '''dataFrame = read_csv(r'./file/rz.csv', sep=",") print("读取cvs文件的所有数据: ") print(dataFrame)print() print("读取前5行数据:") print(dataFrame.head(5))print() print("读取后5行数据:") print(dataFrame.tail(5))print() print("使用read_table读取csv数据也是可以的")dataFrame = read_table(r'./file/rz.csv', sep=",") print("读取cvs文件的所有数据: ") print(dataFrame)
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisByCVSFileCreatePandasOfDataFrame.py
读取cvs文件的所有数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60
1 2308024244 23080242 周怡 女 66 91 75 47 47 44
2 2308024251 23080242 张波 男 85 81 75 45 45 60
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71
4 2308024219 23080242 封印 女 73 88 92 61 47 46
5 2308024201 23080242 迟培 男 60 50 89 71 76 71
6 2308024347 23080243 李华 女 67 61 84 61 65 78
7 2308024307 23080243 陈田 男 76 79 86 69 40 69
8 2308024326 23080243 余皓 男 66 67 85 65 61 71
9 2308024320 23080243 李嘉 女 62 作弊 90 60 67 77
10 2308024342 23080243 李上初 男 76 90 84 60 66 60
11 2308024310 23080243 郭窦 女 79 67 84 64 64 79
12 2308024435 23080244 姜毅涛 男 77 71 缺考 61 73 76
13 2308024432 23080244 赵宇 男 74 74 88 68 70 71
14 2308024446 23080244 周路 女 76 80 77 61 74 80
15 2308024421 23080244 林建祥 男 72 72 81 63 90 75
16 2308024433 23080244 李大强 男 79 76 77 78 70 70
17 2308024428 23080244 李侧通 男 64 96 91 69 60 77
18 2308024402 23080244 王慧 女 73 74 93 70 71 75
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 83
20 2308024201 23080242 迟培 男 60 50 89 71 76 71读取前5行数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60
1 2308024244 23080242 周怡 女 66 91 75 47 47 44
2 2308024251 23080242 张波 男 85 81 75 45 45 60
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71
4 2308024219 23080242 封印 女 73 88 92 61 47 46读取后5行数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
16 2308024433 23080244 李大强 男 79 76 77 78 70 70
17 2308024428 23080244 李侧通 男 64 96 91 69 60 77
18 2308024402 23080244 王慧 女 73 74 93 70 71 75
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 83
20 2308024201 23080242 迟培 男 60 50 89 71 76 71使用read_table读取csv数据也是可以的
读取cvs文件的所有数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60
1 2308024244 23080242 周怡 女 66 91 75 47 47 44
2 2308024251 23080242 张波 男 85 81 75 45 45 60
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71
4 2308024219 23080242 封印 女 73 88 92 61 47 46
5 2308024201 23080242 迟培 男 60 50 89 71 76 71
6 2308024347 23080243 李华 女 67 61 84 61 65 78
7 2308024307 23080243 陈田 男 76 79 86 69 40 69
8 2308024326 23080243 余皓 男 66 67 85 65 61 71
9 2308024320 23080243 李嘉 女 62 作弊 90 60 67 77
10 2308024342 23080243 李上初 男 76 90 84 60 66 60
11 2308024310 23080243 郭窦 女 79 67 84 64 64 79
12 2308024435 23080244 姜毅涛 男 77 71 缺考 61 73 76
13 2308024432 23080244 赵宇 男 74 74 88 68 70 71
14 2308024446 23080244 周路 女 76 80 77 61 74 80
15 2308024421 23080244 林建祥 男 72 72 81 63 90 75
16 2308024433 23080244 李大强 男 79 76 77 78 70 70
17 2308024428 23080244 李侧通 男 64 96 91 69 60 77
18 2308024402 23080244 王慧 女 73 74 93 70 71 75
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 83
20 2308024201 23080242 迟培 男 60 50 89 71 76 71Process finished with exit code 0
三: 通过read_excel函数读取excel数据创建(DataFrame)数据框
# -*- coding:utf-8 -*-from pandas import read_excel'''从文件(i_nuc.xls)读取数据创建pandas的DataFrame数据框 ''' dataFrame = read_excel(r'./file/i_nuc.xls', sheet_name="Sheet3")print(dataFrame)print() print("读取前5行数据:") print(dataFrame.head(5))print() print("读取后5行数据:") print(dataFrame.tail(5))
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisByExcelFileCreateDataFrame.py
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60
1 2308024244 23080242 周怡 女 66 91 75 47 47 44
2 2308024251 23080242 张波 男 85 81 75 45 45 60
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71
4 2308024219 23080242 封印 女 73 88 92 61 47 46
5 2308024201 23080242 迟培 男 60 50 89 71 76 71
6 2308024347 23080243 李华 女 67 61 84 61 65 78
7 2308024307 23080243 陈田 男 76 79 86 69 40 69
8 2308024326 23080243 余皓 男 66 67 85 65 61 71
9 2308024320 23080243 李嘉 女 62 作弊 90 60 67 77
10 2308024342 23080243 李上初 男 76 90 84 60 66 60
11 2308024310 23080243 郭窦 女 79 67 84 64 64 79
12 2308024435 23080244 姜毅涛 男 77 71 缺考 61 73 76
13 2308024432 23080244 赵宇 男 74 74 88 68 70 71
14 2308024446 23080244 周路 女 76 80 77 61 74 80
15 2308024421 23080244 林建祥 男 72 72 81 63 90 75
16 2308024433 23080244 李大强 男 79 76 77 78 70 70
17 2308024428 23080244 李侧通 男 64 96 91 69 60 77
18 2308024402 23080244 王慧 女 73 74 93 70 71 75
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 83
20 2308024201 23080242 迟培 男 60 50 89 71 76 71读取前5行数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
0 2308024241 23080242 成龙 男 76 78 77 40 23 60
1 2308024244 23080242 周怡 女 66 91 75 47 47 44
2 2308024251 23080242 张波 男 85 81 75 45 45 60
3 2308024249 23080242 朱浩 男 65 50 80 72 62 71
4 2308024219 23080242 封印 女 73 88 92 61 47 46读取后5行数据:
学号 班级 姓名 性别 英语 体育 军训 数分 高代 解几
16 2308024433 23080244 李大强 男 79 76 77 78 70 70
17 2308024428 23080244 李侧通 男 64 96 91 69 60 77
18 2308024402 23080244 王慧 女 73 74 93 70 71 75
19 2308024422 23080244 李晓亮 男 85 60 85 72 72 83
20 2308024201 23080242 迟培 男 60 50 89 71 76 71Process finished with exit code 0
四: 通过read_sql函数多读取数据mysql的数据创建(DataFrame)数据框
# -*- coding:utf-8 -*- import pandas as pd import pymysql"""从文件数据框表读取数据创建pandas的DataFrame数据框 """ conn = None dataFrame = None try:# 打开数据库连接 db = pymysql.connect(host="localhost", user="您的用户名", password="您的密码", database="数据库名称", charset='utf8' )conn = pymysql.connect(user="root", password="123456", host="localhost", database="tope-pay-user", port=3306,charset='utf8', autocommit=False)sql = "select * from sys_books"print("利用pandas模块导入mysql表的数据")dataFrame = pd.read_sql(sql, conn) except Exception as err:print("pandas模块导入表sys_books数据异常: ", err) finally:conn.close()print("导入的dataFrame数据为:")print(dataFrame)
利用pandas模块导入mysql表的数据
D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisByMySQLCreateDataFrame.py:16: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy.
dataFrame = pd.read_sql(sql, conn)
导入的dataFrame数据为:
id NAME ... update_time deleted
0 1 零基础学Python3 ... 2023-09-26 16:58:34 0
1 2 零基础学Java ... 2023-09-26 16:58:34 0
2 3 零基础学C++ ... 2023-09-26 16:58:34 0
3 4 零基础学Python数据可视化 ... 2023-09-26 16:58:34 0
4 5 零基础学C语言 ... 2023-09-26 16:58:34 0
5 6 零基础学android ... 2023-09-26 16:58:34 0
6 7 零基础学Python3 ... 2023-09-26 17:09:41 0
7 8 零基础学Java ... 2023-09-26 17:09:41 0
8 9 零基础学C++ ... 2023-09-26 17:09:41 0
9 10 零基础学Python数据可视化 ... 2023-09-26 17:09:41 0
10 11 零基础学C语言 ... 2023-09-26 17:09:41 0
11 12 零基础学android ... 2023-09-26 17:09:41 0[12 rows x 8 columns]
五:通过create_engine函数读取mysql数据创建(DataFrame)数据框
# -*- coding:utf-8 -*-from sqlalchemy import create_engine import pandas as pdMYSQL_HOST = 'localhost' MYSQL_PORT = '3306' MYSQL_USER = 'root' MYSQL_PASSWORD = '123456' MYSQL_DB = 'tope-pay-user'"""从文件数据框表读取数据创建pandas的DataFrame数据框 """engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8'% (MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))sql = 'select * from sys_books'df = pd.read_sql(sql, engine)pd.set_option('display.unicode.ambiguous_as_wide', True) pd.set_option('display.unicode.east_asian_width', True) print(df)
运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisByMySQLCreate_engineDataFrame.py
id NAME ... update_time deleted
0 1 零基础学Python3 ... 2023-09-26 16:58:34 0
1 2 零基础学Java ... 2023-09-26 16:58:34 0
2 3 零基础学C++ ... 2023-09-26 16:58:34 0
3 4 零基础学Python数据可视化 ... 2023-09-26 16:58:34 0
4 5 零基础学C语言 ... 2023-09-26 16:58:34 0
5 6 零基础学android ... 2023-09-26 16:58:34 0
6 7 零基础学Python3 ... 2023-09-26 17:09:41 0
7 8 零基础学Java ... 2023-09-26 17:09:41 0
8 9 零基础学C++ ... 2023-09-26 17:09:41 0
9 10 零基础学Python数据可视化 ... 2023-09-26 17:09:41 0
10 11 零基础学C语言 ... 2023-09-26 17:09:41 0
11 12 零基础学android ... 2023-09-26 17:09:41 0[12 rows x 8 columns]
Process finished with exit code 0
六: 通过函数to_cvs将数据从DataFrame导出至CVS文件
# -*- coding:utf-8 -*-import pandas as pd from pandas import Series'''使用函数to_cvs将数据从DataFrame导出至CVS文件 ''' dataFrame = pd.DataFrame(({'age': Series([26, 85, 64]), 'name': Series(['Ben', 'John', 'Jerry'])})) # 创建DataFrame数据块 print(dataFrame)# 将数据导出到(./file/01.csv)文件中;默认会带上索引 dataFrame.to_csv('./file/01.csv') # 将数据导出为json格式数据 dataFrame.to_json('./file/001.json')# 将数据导出到(./file/02.csv)文件中;无索引 dataFrame.to_csv("./file/02.csv", index=False)
七:通过to_execl函数将数据导出到excel文件中
# -*- coding:utf-8 -*-import pandas as pd from pandas import Series'''使用to_execl函数将数据导出到excel文件中 '''dataFrame = pd.DataFrame({'age': Series([26, 85, 64]),'name': Series(['Ben', 'John', 'Jerry'])} )# 将数据导出到excel中;默认带index索引 dataFrame.to_excel("./file/01.xlsx") # 不带index dataFrame.to_excel("./file/02.xlsx", index=False)
八: 通过create_engine函数及to_sql函数将数据导出到mysql数据库
# -*- coding:utf-8 -*- import pandas as pd import datetime from pandas import Series from sqlalchemy import create_engine'''使用create_engine及to_sql将数据导出到mysql数据库 ''' MYSQL_HOST = 'localhost' MYSQL_PORT = '3306' MYSQL_USER = 'root' MYSQL_PASSWORD = '123456' MYSQL_DB = 'tope-pay-user' engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8'% (MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB)) day = datetime.datetime.now() # 构建数据框 dataFrame = pd.DataFrame({'name': Series(['零基础学Python3', '零基础学Java', '零基础学C', '零基础学Python数据可视化', '零基础学C语言','零基础学android']),'category': Series(['Python', 'Java', 'C++', 'Python', 'C', 'Android']),'price': Series(['79.00', '90.00', '70.00', '49', '39', '89']),'publish_time': Series([day, day, day, day, day, day]),'create_time': Series([day, day, day, day, day, day]),'update_time': Series([day, day, day, day, day, day]),'deleted': Series([0, 0, 0, 0, 0, 0])} )# 存入到mysql数据库dataFrame.to_sql(name='sys_books', con=engine, if_exists='append', index=False, index_label=False)sql = 'select * from sys_books'df = pd.read_sql(sql, engine)print(df) print(df.shape)运行效果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\dataanalysis\DataAnalysisDataFromDataFrameToMySQL.py
id NAME ... update_time deleted
0 1 零基础学Python3 ... 2023-09-26 16:58:34 0
1 2 零基础学Java ... 2023-09-26 16:58:34 0
2 3 零基础学C++ ... 2023-09-26 16:58:34 0
3 4 零基础学Python数据可视化 ... 2023-09-26 16:58:34 0
4 5 零基础学C语言 ... 2023-09-26 16:58:34 0
5 6 零基础学android ... 2023-09-26 16:58:34 0
6 7 零基础学Python3 ... 2023-09-26 17:09:41 0
7 8 零基础学Java ... 2023-09-26 17:09:41 0
8 9 零基础学C++ ... 2023-09-26 17:09:41 0
9 10 零基础学Python数据可视化 ... 2023-09-26 17:09:41 0
10 11 零基础学C语言 ... 2023-09-26 17:09:41 0
11 12 零基础学android ... 2023-09-26 17:09:41 0
12 13 零基础学Python3 ... 2023-10-02 12:21:41 0
13 14 零基础学Java ... 2023-10-02 12:21:41 0
14 15 零基础学C ... 2023-10-02 12:21:41 0
15 16 零基础学Python数据可视化 ... 2023-10-02 12:21:41 0
16 17 零基础学C语言 ... 2023-10-02 12:21:41 0
17 18 零基础学android ... 2023-10-02 12:21:41 0
18 19 零基础学Python3 ... 2023-10-02 12:22:14 0
19 20 零基础学Java ... 2023-10-02 12:22:14 0
20 21 零基础学C ... 2023-10-02 12:22:14 0
21 22 零基础学Python数据可视化 ... 2023-10-02 12:22:14 0
22 23 零基础学C语言 ... 2023-10-02 12:22:14 0
23 24 零基础学android ... 2023-10-02 12:22:14 0
24 25 零基础学Python3 ... 2023-10-02 12:22:49 0
25 26 零基础学Java ... 2023-10-02 12:22:49 0
26 27 零基础学C ... 2023-10-02 12:22:49 0
27 28 零基础学Python数据可视化 ... 2023-10-02 12:22:49 0
28 29 零基础学C语言 ... 2023-10-02 12:22:49 0
29 30 零基础学android ... 2023-10-02 12:22:49 0[30 rows x 8 columns]
(30, 8)Process finished with exit code 0