esai大树聚吧 关注:13贴子:345
  • 13回复贴,共1

pandas,numpy,matplotlib等包的功能和作用?

只看楼主收藏回复

Python 2.0于2000年10月16日发布。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。
目前Python的正式版已经更新到3.9版本,且官方不再维护2.0版本,初学者(包括已经在学习的)至少从3.6版本开始学习Python。

Python中的库、框架、包意义基本相同,都是别人造好的轮子,我们可以直接使用,以减少重复的逻辑代码。正是由于有众多覆盖各个领域的框架,我们使用起Python来才能简单高效,而不用关注技术实现细节。

Pandas简介
Pandas是使用Python语言开发的用于数据处理和数据分析的第三方库。它擅长处理数字型数据和时间序列数据,当然文本型的数据也能轻松处理。
Pandas可以轻松应对白领们日常工作中的各种表格数据处理需求,还应用在金融、统计、数理研究、物理计算、社会科学、工程等领域。
Pandas可以实现复杂的处理逻辑,这些往往是Excel等工具无法完成的,还可以自动化、批量化,免去我们在处理相同的大量数据时的重复工作。
Pandas可以实现非常震撼的可视化效果,它对接众多令人赏心悦目的可视化库,可以实现动态数据交互效果。

import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下# 如果是CSV,使用
pd.read_csv(),还支持很多类型的数据读取
这样就把数据读取到变量df中,输入df看一下内容。

df.head() # 查看前5条,括号里可以写明你想看的条数
df.tail() # 查看尾部5条
df.sample(5) # 随机查看5条
df.shape # (100, 6) 查看行数和列数
df.info() # 查看索引、数据类型和内存信息
df.describe() # 查看数值型列的汇总统计
df.dtypes # 查看各字段类型
df.axes # 显示数据行和列名
df.columns # 列名
df.info()显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等:

df.set_index('name', inplace=True) # 建立索引并生效
https://baijiahao.baidu.com/s?id=1706219996811165885&wfr=spider&for=pc
增加列
用Pandas增加一列非常方便,就与新定义一个字典的键值一样。
df['one'] = 1# 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# 将计算得来的结果赋值给新列
df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)
df['total'] = df.sum(axis=1) # 可以把所有为数字的列相加
df['avg'] = df.total/4# 增加平均成绩列

绘图
Pandas利用plot()调用Matplotlib快速绘制出数据可视化图形。注意,第一次使用plot()时可能需要执行两次才能显示图形。
可以使用plot()快速绘制折线图。
df['Q1'].plot() # Q1成绩的折线分布
df.loc['Ben','Q1':'Q4'].plot() # ben四个季度的成绩变化
df.loc[ 'Ben','Q1':'Q4'].plot.bar() # 柱状图
df.loc[ 'Ben','Q1':'Q4'].plot.barh() # 横向柱状图
# 各Team四个季度总成绩趋势
df.groupby('team').sum().T.plot()
df.groupby('team').count().Q1.plot.pie()

df.to_excel('team-done.xlsx') # 导出 Excel文件
df.to_csv('team-done.csv') # 导出 CSV文件


IP属地:湖南1楼2022-05-12 14:04回复
    20个必不可少的Python库也是基本的第三方库

    Requests.Kenneth Reitz写的最富盛名的http库。每个Python程序员都应该有它。
    Scrapy.如果你从事爬虫相关的工作,那么这个库也是必不可少的。用过它之后你就不会再想用别的同类库了。
    wxPython.Python的一个GUI(图形用户界面)工具。我主要用它替代tkinter。你一定会爱上它的。
    Pillow.它是PIL(Python图形库)的一个友好分支。对于用户比PIL更加友好,对于任何在图形领域工作的人是必备的库。
    SQLAlchemy.一个数据库的库。对它的评价褒贬参半。是否使用的决定权在你手里。
    BeautifulSoup.我知道它很慢,但这个xml和html的解析库对于新手非常有用。
    Twisted.对于网络应用开发者最重要的工具。它有非常优美的api,被很多Python开发大牛使用。
    NumPy.我们怎么能缺少这么重要的库?它为Python提供了很多高级的数学方法。
    SciPy.既然我们提了NumPy,那就不得不提一下SciPy。这是一个Python的算法和数学工具库,它的功能把很多科学家从Ruby吸引到了Python。
    matplotlib.一个绘制数据图的库。对于数据科学家或分析师非常有用。
    Pygame.哪个程序员不喜欢玩游戏和写游戏?这个库会让你在开发2D游戏的时候如虎添翼。
    Pyglet.3D动画和游戏开发引擎。非常有名的Python版本Minecraft就是用这个引擎做的。
    pyQT.Python的GUI工具。这是我在给Python脚本开发用户界面时次于wxPython的选择。
    pyGtk.也是Python GUI库。很有名的Bittorrent客户端就是用它做的。
    Scapy.用Python写的数据包探测和分析库。
    pywin32.一个提供和windows交互的方法和类的Python库。
    nltk.自然语言工具包。我知道大多数人不会用它,但它通用性非常高。如果你需要处理字符串的话,它是非常好的库。但它的功能远远不止如此,自己摸索一下吧。
    nose.Python的测试框架。被成千上万的Python程序员使用。如果你做测试导向的开发,那么它是必不可少的。
    SymPy.SymPy可以做代数评测、差异化、扩展、复数等等。它封装在一个纯Python发行版本里。
    IPython.怎么称赞这个工具的功能都不为过。它把Python的提示信息做到了极致。包括完成信息、历史信息、shell功能,以及其他很多很多方面。一定要研究一下它。

    awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。
    中文版Github地址: https://github.com/jobbole/awesome-python-cn


    IP属地:湖南2楼2022-05-12 14:14
    回复
      python-系统操作相关模块(os.path)

      import os
      os.system('notepad.exe') #打开记事本功能
      os.system('calc.exe')
      os.system('cmd.exe') #-1073741510
      os.system('control.exe') #控制面板
      os.system('msconfig.exe')

      print(os.getcwd())#返回当前的目录路径
      print(os.listdir('../pythonProject'))#返回指定路径下的所有目录和文件
      os.mkdir('newdir2')#创建目录
      os.makedirs('A/B/C')#创建多级目录
      os.rmdir('newdir2')#删除目录
      os.removedirs('A/B/C')#删除多级目录
      os.chdir('F://pythonProject')#改变当前的目录路径

      print(os.path.abspath('first.py'))#获取文件的绝对路径
      print(os.path.join('F:\\pythonProject','three.py'))#将目录和文件名连接起来
      print(os.path.split('F:\\pythonProject\\first.py'))#将目录和文件名分割开来


      IP属地:湖南3楼2022-05-12 14:47
      收起回复
        获得系统当前时间:
        import datetime
        datetime.datetime.now()
        #datetime.datetime(2022, 5, 12, 17, 49, 23, 412014)

        选择列的方法如下:
        # 查看指定列
        df['Q1']
        df.Q1
        选择多列的可以用以下方法:
        # 选择多列
        df[['team', 'Q1']] # 只看这两列,注意括号
        df.loc[:, ['team', 'Q1']] # 和上一行效果一样
        df.loc[x, y]是一个非常强大的数据选择函数,其中x代表行,y代表列,行和列都支持条件表达式,也支持类似列表那样的切片(如果要用自然索引,需要用df.iloc[])。

        选择行
        选择行的方法如下:
        # 用指定索引选取
        df[df.index == 'Liver'] # 指定姓名# 用自然索引选择,类似列表的切片
        df[0:3] # 取前三行
        df[0:10:2] # 在前10个中每两个取一个
        df.iloc[:10,:] # 前10个
        https://baijiahao.baidu.com/s?id=1706219996811165885&wfr=spider&for=pc


        IP属地:湖南4楼2022-05-12 18:31
        收起回复

          import matplotlib
          df1['meantempc'].plot()
          <AxesSubplot:>
          df1['meantempc'].plot()
          <AxesSubplot:>
          .....
          python <AxesSubplot:>不出图,为什么????
          答:由于,AxesSubplot不能直接调用plot的show()方法得出figure

          显示方法,具体代码如下:
          import matplotlib.pyplot as plt
          import matplotlib.pyplot as plt
          df1['meantempc'].plot();plt.show()

          df1=df[['date','meantempc','maxtempc','mintempc']]
          df1.set_index('date', inplace=True) # 建立索引并生效
          # 弄反了,应该是先横,后列df1.loc['date','1987/1/2':'1988/1/1']
          df1.loc['1987/1/2','meantempc':'mintempc'].plot();plt.show()

          df2=df1[0:19]
          df2.groupby('meantempc').count().maxtempc.plot.pie();plt.show()

          df1.to_csv('df1.csv')


          IP属地:湖南5楼2022-05-12 20:09
          回复

            x=np.arange(0,5,0.1);y1=np.sin(2*np.pi*x);x;y1;y2=np.cos(2*np.pi*x)
            plt.subplot(211);plt.plot(x,y1,'b--');plt.subplot(212);plt.plot(x,y2,'r-');plt.show()

            x=np.arange(-2*np.pi,2*np.pi,0.01);y1=np.sin(2*x)/x
            plt.plot(x,y1,'r-');plt.show()


            IP属地:湖南6楼2022-05-13 21:13
            回复