前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10分钟入门Pandas-系列(3)

10分钟入门Pandas-系列(3)

作者头像
披头
发布2019-12-26 11:34:49
5440
发布2019-12-26 11:34:49
举报
文章被收录于专栏:datartisandatartisan

pandas入门系列本期就完结了,该系列一共三期,学习后可以初步掌握经典库pandas使用方法,前文回顾 10分钟入门Pandas-系列(1) 10分钟入门Pandas-系列(2)

分类

pandas可以在DataFrame中包含分类

代码语言:javascript
复制
In []: import pandas as pd
   ...: import numpy as np
   ...:
   ...: df = pd.DataFrame({"id": [, , , , , ],
   ...:                    "raw_grade": ['a', 'b', 'b', 'a', 'a', 'e']})

转换原始类别为分类数据类型

代码语言:javascript
复制
In []: df["grade"] = df["raw_grade"].astype("category")
   ...: df["grade"]
Out[]:
    a
    b
    b
    a
    a
    e
Name: grade, dtype: category
Categories (, object): [a, b, e]

重命名分类为更有意义的名称 (分配到Series.cat.categories对应位置!)

代码语言:javascript
复制
df["grade"].cat.categories = ["very good", "good", "very bad"]

重排顺分类,同时添加缺少的分类( Series.cat方法下返回新默认序列)

代码语言:javascript
复制
In []:  df["grade"] = df["grade"].cat.set_categories(["very bad", "bad", "medium",
   ...: "good", "very good"])

In []: df
Out[]:
   id raw_grade      grade
            a  very good
            b       good
            b       good
            a  very good
            a  very good
            e   very bad

In []: df["grade"]
Out[]:
    very good
         good
         good
    very good
    very good
     very bad
Name: grade, dtype: category
Categories (, object): [very bad, bad, medium, good, very good]

按照分类排序,而不是按照词汇的字母顺序排序

代码语言:javascript
复制
In []: df.sort_values(by="grade")
Out[]:
   id raw_grade      grade
            e   very bad
            b       good
            b       good
            a  very good
            a  very good
            a  very good

按照类别列分组,也显示空类别.

代码语言:javascript
复制
In []: df.groupby("grade").size()
Out[]:
grade
very bad     
bad          
medium       
good         
very good    
dtype: int64

绘图

绘图文档链接

https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html

绘图

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
代码语言:javascript
复制
plt.close('all')
代码语言:javascript
复制
ts = pd.Series(np.random.randn(),
               index=pd.date_range('1/1/2000', periods=))
代码语言:javascript
复制
ts = ts.cumsum()
代码语言:javascript
复制
ts.plot()

如下图

代码语言:javascript
复制
df = pd.DataFrame(np.random.randn(, ), index=ts.index,
                  columns=['A', 'B', 'C', 'D'])
代码语言:javascript
复制
df = df.cumsum()
代码语言:javascript
复制
plt.figure(); df.plot(); plt.legend(loc='best')

如下图

数据输入/输出

csv

写入csv文件

代码语言:javascript
复制
df.to_csv('foo.csv')

读取csv文件

代码语言:javascript
复制
 pd.read_csv('foo.csv')

HDF5

写入HDF5存储

代码语言:javascript
复制
df.to_hdf('foo.h5', 'df')

读取HDF5存储

代码语言:javascript
复制
pd.read_hdf('foo.h5', 'df')

EXCEL

写入excel文件

代码语言:javascript
复制
df.head().to_excel('foo.xlsx', sheet_name='Sheet1')

读取excel文件

代码语言:javascript
复制
pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

陷阱

如果尝试这样操作可能会看到像这样的异常:

代码语言:javascript
复制
if pd.Series([False, True, False]):
    print("I was true")
代码语言:javascript
复制
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-16-5c782b38cd2f> in <module>
----> 1 if pd.Series([False, True, False]):
           print("I was true")


D:\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
                "The truth value of a {0} is ambiguous. "
                "Use a.empty, a.bool(), a.item(), a.any() or a.all().".format(
->                  self.__class__.__name__
                )
            )


ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

报错原因是:一个数组的真值是模棱两可的(有真亦有假),此时需要使用a.empty, a.bool(), a.item(), a.any() or a.all()的用法

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分类
  • 绘图
  • 绘图
  • 数据输入/输出
    • csv
      • HDF5
      • 陷阱
      相关产品与服务
      文件存储
      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档