
Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案
- # -*- 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
- # -*- 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
- # -*- 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
- # -*- 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]
- # -*- coding:utf-8 -*-
-
- from sqlalchemy import create_engine
- import pandas as pd
-
- MYSQL_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
- # -*- 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)
- # -*- 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)
- # -*- 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