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



    Python3中类的高级语法及实战

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

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

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

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

    国庆中秋宅家自省: Python在Excel中绘图尝鲜




    一:通过read_table函数读取数据创建(DataFrame)数据框

    1. # -*- coding:utf-8 -*-
    2. from pandas import read_table
    3. '''
    4. 从文件(rz.txt)读取数据创建pandas的DataFrame数据框
    5. '''
    6. print("""
    7. 注意:
    8. (1)txt文本文件要保存成UTF-8格式才不会报错
    9. (2)查看数据框dataFrame前n项数据使用dataFrame.head(n);后m项数据用dataFrame.tail(m);默认均是5
    10. """)
    11. dataFrame = read_table(r'./file/rz.txt', sep="\t")
    12. print("查看前5项数据: ", dataFrame.head(5))
    13. print()
    14. print("查看后5项数据: ", dataFrame.tail(5))
    15. print()
    16. print("查看所有数据")
    17. 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)数据块

    1. # -*- coding:utf-8 -*-
    2. from pandas import read_csv, read_table
    3. '''
    4. 从文件(rz.cvs)读取数据创建pandas的DataFrame数据框
    5. '''
    6. dataFrame = read_csv(r'./file/rz.csv', sep=",")
    7. print("读取cvs文件的所有数据: ")
    8. print(dataFrame)
    9. print()
    10. print("读取前5行数据:")
    11. print(dataFrame.head(5))
    12. print()
    13. print("读取后5行数据:")
    14. print(dataFrame.tail(5))
    15. print()
    16. print("使用read_table读取csv数据也是可以的")
    17. dataFrame = read_table(r'./file/rz.csv', sep=",")
    18. print("读取cvs文件的所有数据: ")
    19. 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)数据框

    1. # -*- coding:utf-8 -*-
    2. from pandas import read_excel
    3. '''
    4. 从文件(i_nuc.xls)读取数据创建pandas的DataFrame数据框
    5. '''
    6. dataFrame = read_excel(r'./file/i_nuc.xls', sheet_name="Sheet3")
    7. print(dataFrame)
    8. print()
    9. print("读取前5行数据:")
    10. print(dataFrame.head(5))
    11. print()
    12. print("读取后5行数据:")
    13. 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)数据框

    1. # -*- coding:utf-8 -*-
    2. import pandas as pd
    3. import pymysql
    4. """
    5. 从文件数据框表读取数据创建pandas的DataFrame数据框
    6. """
    7. conn = None
    8. dataFrame = None
    9. try:
    10. # 打开数据库连接 db = pymysql.connect(host="localhost", user="您的用户名", password="您的密码", database="数据库名称", charset='utf8' )
    11. conn = pymysql.connect(user="root", password="123456", host="localhost", database="tope-pay-user", port=3306,
    12. charset='utf8', autocommit=False)
    13. sql = "select * from sys_books"
    14. print("利用pandas模块导入mysql表的数据")
    15. dataFrame = pd.read_sql(sql, conn)
    16. except Exception as err:
    17. print("pandas模块导入表sys_books数据异常: ", err)
    18. finally:
    19. conn.close()
    20. print("导入的dataFrame数据为:")
    21. 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)数据框

    1. # -*- coding:utf-8 -*-
    2. from sqlalchemy import create_engine
    3. import pandas as pd
    4. MYSQL_HOST = 'localhost'
    5. MYSQL_PORT = '3306'
    6. MYSQL_USER = 'root'
    7. MYSQL_PASSWORD = '123456'
    8. MYSQL_DB = 'tope-pay-user'
    9. """
    10. 从文件数据框表读取数据创建pandas的DataFrame数据框
    11. """
    12. engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8'
    13. % (MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))
    14. sql = 'select * from sys_books'
    15. df = pd.read_sql(sql, engine)
    16. pd.set_option('display.unicode.ambiguous_as_wide', True)
    17. pd.set_option('display.unicode.east_asian_width', True)
    18. 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文件

    1. # -*- coding:utf-8 -*-
    2. import pandas as pd
    3. from pandas import Series
    4. '''
    5. 使用函数to_cvs将数据从DataFrame导出至CVS文件
    6. '''
    7. dataFrame = pd.DataFrame(({'age': Series([26, 85, 64]), 'name': Series(['Ben', 'John', 'Jerry'])}))
    8. # 创建DataFrame数据块
    9. print(dataFrame)
    10. # 将数据导出到(./file/01.csv)文件中;默认会带上索引
    11. dataFrame.to_csv('./file/01.csv')
    12. # 将数据导出为json格式数据
    13. dataFrame.to_json('./file/001.json')
    14. # 将数据导出到(./file/02.csv)文件中;无索引
    15. dataFrame.to_csv("./file/02.csv", index=False)

    七:通过to_execl函数将数据导出到excel文件中


    1. # -*- coding:utf-8 -*-
    2. import pandas as pd
    3. from pandas import Series
    4. '''
    5. 使用to_execl函数将数据导出到excel文件中
    6. '''
    7. dataFrame = pd.DataFrame(
    8. {'age': Series([26, 85, 64]),
    9. 'name': Series(['Ben', 'John', 'Jerry'])}
    10. )
    11. # 将数据导出到excel中;默认带index索引
    12. dataFrame.to_excel("./file/01.xlsx")
    13. # 不带index
    14. dataFrame.to_excel("./file/02.xlsx", index=False)

    八:  通过create_engine函数及to_sql函数将数据导出到mysql数据库 


    1. # -*- coding:utf-8 -*-
    2. import pandas as pd
    3. import datetime
    4. from pandas import Series
    5. from sqlalchemy import create_engine
    6. '''
    7. 使用create_engine及to_sql将数据导出到mysql数据库
    8. '''
    9. MYSQL_HOST = 'localhost'
    10. MYSQL_PORT = '3306'
    11. MYSQL_USER = 'root'
    12. MYSQL_PASSWORD = '123456'
    13. MYSQL_DB = 'tope-pay-user'
    14. engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8'
    15. % (MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))
    16. day = datetime.datetime.now()
    17. # 构建数据框
    18. dataFrame = pd.DataFrame(
    19. {'name': Series(['零基础学Python3', '零基础学Java', '零基础学C', '零基础学Python数据可视化', '零基础学C语言',
    20. '零基础学android']),
    21. 'category': Series(['Python', 'Java', 'C++', 'Python', 'C', 'Android']),
    22. 'price': Series(['79.00', '90.00', '70.00', '49', '39', '89']),
    23. 'publish_time': Series([day, day, day, day, day, day]),
    24. 'create_time': Series([day, day, day, day, day, day]),
    25. 'update_time': Series([day, day, day, day, day, day]),
    26. 'deleted': Series([0, 0, 0, 0, 0, 0])
    27. }
    28. )
    29. # 存入到mysql数据库
    30. dataFrame.to_sql(name='sys_books', con=engine, if_exists='append', index=False, index_label=False)
    31. sql = 'select * from sys_books'
    32. df = pd.read_sql(sql, engine)
    33. print(df)
    34. 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
     

  • 相关阅读:
    SystemVerilog语言之约束的技巧和技术
    【LeetCode】二叉树OJ
    CTFshow-PWN-栈溢出(pwn44)
    Bindiff安装以及使用
    螺旋折线(找规律 + 准确取点优化分析 + 普通思路)【包含详细的思考过程】
    CMake教程系列-04-编译相关函数
    考研专业课之C语言(郝斌)
    android studio avd加载自己编译的镜像
    16、Python --案例实操:控制台打印【 菱形 】和 【 圆 】
    Linux的文件权限管理
  • 原文地址:https://blog.csdn.net/u014635374/article/details/133471022