Python3数据科学包系列(二):数据分析实战

编程入门 行业动态 更新时间:2024-10-26 04:24:53

Python3<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据科学包系列(二):数据分析实战"/>

Python3数据科学包系列(二):数据分析实战


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.0

Process 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  71

Process 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  71

Process 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
 

更多推荐

Python3数据科学包系列(二):数据分析实战

本文发布于:2024-02-27 06:04:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705464.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   实战   科学   系列

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!