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


Python3中类的高级语法及实战

Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案

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

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

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




一:通过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

扫描二维码关注公众号,回复: 16971225 查看本文章

查看所有数据
            学号        班级   姓名 性别  英语  体育  军训  数分  高代    解几
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 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
 

六: 通过函数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
 

猜你喜欢

转载自blog.csdn.net/u014635374/article/details/133471022
今日推荐