一、Pandas简介
Pandas是一个强大的分析结构化数据的工具集;
(Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的函数和方法,能够快速便捷地处理数据)
它的使用基础是Numpy(提供高性能的矩阵运算);
用于数据挖掘和数据分析,同时也提供数据清洗功能
文末放上代码、参考资料和相关数据文件
#全部行都能输出
二、基本操作
1.导入Pandas库并简写为pd,并输出版本号
import
'1.0.3'
2.从列表创建Series
arr
![230d0e52fdaf9b9cb420bfc948c04228.png](https://i-blog.csdnimg.cn/blog_migrate/fe353b4e6792648217eec485a9331e18.png)
三、文件读取与写入
1. 读取
1) csv格式
df
![9c76a4ed45196e6b1dbaecc8d0c9cb4c.png](https://i-blog.csdnimg.cn/blog_migrate/eec91f4bb3d8b72b649071b9ac2f4310.png)
2) txt格式
df_txt
![cb2f14fa90432468bc5ba23a6fa82f8c.png](https://i-blog.csdnimg.cn/blog_migrate/638fb38333c5b183c2dcd75984800503.png)
3) xls或xlxs格式
df_excel
![507853193065a3e0b4d06fbd8d04e131.png](https://i-blog.csdnimg.cn/blog_migrate/16c3bd32d4b07971f4417096efff9afd.png)
2. 写入
1) csv格式
df
2) xls或xlsx格式
df
三、基本数据结构
1. 什么是Series
![91e1a7502f7f8ecea6f8e99a612578f2.png](https://i-blog.csdnimg.cn/blog_migrate/c991e04e3ff11e34dda018b119da72c8.jpeg)
创建Series
![ff5aeb398a4692a75efd57e801c92953.png](https://i-blog.csdnimg.cn/blog_migrate/85dbb96d1dfae4eb078fc96d34823301.png)
1) 创建一个Series
#通过ndarray创建Series
![dfaa8a1d0d4a70b90f4be52fec861daf.png](https://i-blog.csdnimg.cn/blog_migrate/ad2a566e4dd7b72741a0b659c23b96f2.png)
ser1
![216e62f3d1ec68a31e06776996c33d28.png](https://i-blog.csdnimg.cn/blog_migrate/22941e2ad722ca4f627d57d5af5cb10e.png)
ser1
![6706e8e69bac02d1b19e29c9150d6ca7.png](https://i-blog.csdnimg.cn/blog_migrate/fdda8ae1e8e5c439f7016acc3017dde5.png)
#通过字典创建Series
![76e1b9bb1c120bcdf307c376b311571d.png](https://i-blog.csdnimg.cn/blog_migrate/3630e773a519184559258676fbb3da6c.png)
ser2
![fa47dd36c8b20a9fc3172097bf0379b6.png](https://i-blog.csdnimg.cn/blog_migrate/760cf691b52f11c7380305636c5a1c3f.png)
类 ndarray 的对象传入后也会转换为 ndarray 来创建 Series 。
#通过列表创建Series
![fadd3bd4d55940950e81c2d3fecca932.png](https://i-blog.csdnimg.cn/blog_migrate/b1757ef344682a95d1f815404f5dc6ab.png)
ser3
![baebd92758407d5bf67d5df542481ca9.png](https://i-blog.csdnimg.cn/blog_migrate/bfa61e380c59d0f08d4dfcbca298e23c.png)
# 通过标量创建Series 当data只包含一个元素时,Series对象的定义支持"循环补齐"
![d2255147cdd11668b15bb63f97e5bf05.png](https://i-blog.csdnimg.cn/blog_migrate/aabdc37f51a4f430013fc33887b5d31b.png)
s
![e2b03bd3d4be4efcd6a2435d462bc4b3.png](https://i-blog.csdnimg.cn/blog_migrate/3cf44ecc788a1ed63e0d1ece670fe2fe.png)
创建Series的方法
- 1 通过ndarray创建,可指定索引,但是指定索引的个数要和ndarray对象里边元素的个数一致
- 2 通过字典创建,不需要指定索婷,字典的键即索引
- 3 通过类ndarray对象创建,比如说列表,可以指定索引,但是之低昂索引的个数要和ndarray里边元素的个数一致
- 4 参数data可以是一个单独的标量,传入索引后,每个索引对应的都是统一数值的标量
![2f97128f1a9d42aa185cf16287fff492.png](https://i-blog.csdnimg.cn/blog_migrate/113527f0968f3924c53caae8fe3e0716.png)
2) 访问Series属性
s
![b02454fa1dc352e407996dedb6ea6814.png](https://i-blog.csdnimg.cn/blog_migrate/923cff6378217953a5c956e60800b6ef.png)
s
![ebacac799ab1353778eb77f18324f68b.png](https://i-blog.csdnimg.cn/blog_migrate/aae9f765b2a4c110caef30cfeb7362f8.png)
s
![1db3fd4a378487b1d66f66a0bb05e63f.png](https://i-blog.csdnimg.cn/blog_migrate/362c3fc53bb5f7feafb0b7da65f8f7b1.png)
s
![733a739d2f089945bca8e3683f109d00.png](https://i-blog.csdnimg.cn/blog_migrate/41c069d8fa515ee97372559f955d9f1a.png)
s
![3db9767c12525848fe8def148fe54825.png](https://i-blog.csdnimg.cn/blog_migrate/1b4ff48382b815bd62aa00e2a7a98007.png)
Series 数组和字典特性
- Series可以进行索引和切片操作
- Series 同时也像一个固定大小的 dict ,可以通过索引标签获取和设置值
- Series 与 ndarray 非常相似,是大多数 NumPy 函数的有效参数
3) 数组特性
s
![8ae55938b9a560ca7fe18a59897c5109.png](https://i-blog.csdnimg.cn/blog_migrate/4f77a3040f3dd8ea8f8c1077c6c01a97.png)
s
0.5113156521513135
s
![05400f73115bf8237d45c3237302d8b4.png](https://i-blog.csdnimg.cn/blog_migrate/2d30d8a2cb300c86c0a7c3ae311c3df1.png)
s
![e8c66b9cd444dae3175be39a017f9de3.png](https://i-blog.csdnimg.cn/blog_migrate/0f8016ea8b9deeb94bb725f165a28bfb.png)
s
![3737afe45c18818de17fdbbc0bcd060c.png](https://i-blog.csdnimg.cn/blog_migrate/6fa214951b84fffb4e715a730a5e2f19.png)
s
![f6ec1f55566a26321c1926eab3d3bdd7.png](https://i-blog.csdnimg.cn/blog_migrate/ed841b8c37e52496a32d719d8e2b6ae8.png)
s
![266b072c5c8b490887a75114a2060cf8.png](https://i-blog.csdnimg.cn/blog_migrate/20f5db8e63a80b4f0691b82e36ecf709.png)
s
![5093403034a4f18a44a319ffa9b16546.png](https://i-blog.csdnimg.cn/blog_migrate/d751d6836909e1fe1573b6489d2529d2.png)
4) 字典特性
Series 同时也像一个固定大小的 dict ,可以通过索引标签获取和设置值:
s
1.0
s
![fb20fa5c489c3f1ec67e66fe72c7dbd5.png](https://i-blog.csdnimg.cn/blog_migrate/3a8cc8af8e7a09dd1b192300874d535f.png)
s
![7cc0ce680600097c9878edd0980b5a2e.png](https://i-blog.csdnimg.cn/blog_migrate/335066537ebd4b7216e519a3247da425.png)
s
![ee03c63b4dbb090ce3219358f13aaa49.png](https://i-blog.csdnimg.cn/blog_migrate/e28b1f27919a41f92173058b2141500b.png)
'a'
True
'h'
False
s
没有这个键
5) 调用方法
s
-0.060346936266615005
Series有相当多的方法可以调用:
print
['T', 'a', 'abs', 'add', 'add_prefix', 'add_suffix', 'agg', 'aggregate', 'align', 'all', 'any', 'append', 'apply', 'argmax', 'argmin', 'argsort', 'array', 'asfreq', 'asof', 'astype', 'at', 'at_time', 'attrs', 'autocorr', 'axes', 'b', 'between', 'between_time', 'bfill', 'bool', 'c', 'clip', 'combine', 'combine_first', 'convert_dtypes', 'copy', 'corr', 'count', 'cov', 'cummax', 'cummin', 'cumprod', 'cumsum', 'd', 'describe', 'diff', 'div', 'divide', 'divmod', 'dot', 'drop', 'drop_duplicates', 'droplevel', 'dropna', 'dtype', 'dtypes', 'duplicated', 'e', 'empty', 'eq', 'equals', 'ewm', 'expanding', 'explode', 'factorize', 'ffill', 'fillna', 'filter', 'first', 'first_valid_index', 'floordiv', 'ge', 'get', 'groupby', 'gt', 'hasnans', 'head', 'hist', 'iat', 'idxmax', 'idxmin', 'iloc', 'index', 'infer_objects', 'interpolate', 'is_monotonic', 'is_monotonic_decreasing', 'is_monotonic_increasing', 'is_unique', 'isin', 'isna', 'isnull', 'item', 'items', 'iteritems', 'keys', 'kurt', 'kurtosis', 'last', 'last_valid_index', 'le', 'loc', 'lt', 'mad', 'map', 'mask', 'max', 'mean', 'median', 'memory_usage', 'min', 'mod', 'mode', 'mul', 'multiply', 'name', 'nbytes', 'ndim', 'ne', 'nlargest', 'notna', 'notnull', 'nsmallest', 'nunique', 'pct_change', 'pipe', 'plot', 'pop', 'pow', 'prod', 'product', 'quantile', 'radd', 'rank', 'ravel', 'rdiv', 'rdivmod', 'reindex', 'reindex_like', 'rename', 'rename_axis', 'reorder_levels', 'repeat', 'replace', 'resample', 'reset_index', 'rfloordiv', 'rmod', 'rmul', 'rolling', 'round', 'rpow', 'rsub', 'rtruediv', 'sample', 'searchsorted', 'sem', 'set_axis', 'shape', 'shift', 'size', 'skew', 'slice_shift', 'sort_index', 'sort_values', 'squeeze', 'std', 'sub', 'subtract', 'sum', 'swapaxes', 'swaplevel', 'tail', 'take', 'to_clipboard', 'to_csv', 'to_dict', 'to_excel', 'to_frame', 'to_hdf', 'to_json', 'to_latex', 'to_list', 'to_markdown', 'to_numpy', 'to_period', 'to_pickle', 'to_sql', 'to_string', 'to_timestamp', 'to_xarray', 'transform', 'transpose', 'truediv', 'truncate', 'tshift', 'tz_convert', 'tz_localize', 'unique', 'unstack', 'update', 'value_counts', 'values', 'var', 'view', 'where', 'xs']
2.DataFrame
DataFrame是一个可以包含不同数据类型列的二维数据结构,类似于电子表格或SQL表,或Series对象的字典集合,是最常用的pandas对象。
1)创建DataFrame
和 Series 类似,创建 DataFrame 时,也接受许多不同类的参数。虽然在绝大多数情况下,我们通过读取文件来创建 DataFrame。 DataFrame 可以从序列类的数据构建:
方法一 : 包含列表的字典创建
#使用包含列表的字典创建DataFrame时,各个列表内元素个数必须一致
![7bfd6b4d51b4fbe9d6a4b25cf55c3055.png](https://i-blog.csdnimg.cn/blog_migrate/769c3ef64b178b339241abc2a3947fb4.png)
方法二 : 包含series的类字典创建
data
![289eb7d5b0adc3b6c8af13c274e143be.png](https://i-blog.csdnimg.cn/blog_migrate/13c80540a260d47b439bc6cbc0fa08e8.png)
data = {'员工姓名':pd.Series(['赵一','钱明','周元','李雷'],index = ['001','002','003','004']), #指定index与不指定index的区别
'销售业绩':pd.Series([30000,20000,50000],index = ['001','002','003']),
'提成收入':pd.Series([6000,4000,10000],index = ['001','002','003'])}
df2 = pd.DataFrame(data)
df2
![b64b04559d4884f23810ac30ca359fe0.png](https://i-blog.csdnimg.cn/blog_migrate/3157ea6049d33889db34c2b2ee0520bc.png)
pd
![8732aaf4391178c431636c1652a35879.png](https://i-blog.csdnimg.cn/blog_migrate/98850270819f9bcd17ddfd96542d1bfc.png)
pd
![85c19c371e925fed82ad937cc2541dc8.png](https://i-blog.csdnimg.cn/blog_migrate/9c14873713248cd310c36e813ca376e5.png)
df
![0186f6f409ee1c32eeafbebe31804fee.png](https://i-blog.csdnimg.cn/blog_migrate/a940d270b49038af79e6f881ca35d8df.png)
2) 访问索引和列名
df
![2b3b8e71bab5eba277fdcc4a0ba7bcbc.png](https://i-blog.csdnimg.cn/blog_migrate/6958bb7d4cb4ee4e732b831b61954581.png)
df
![4c0c2496410531beb57296506cbfa567.png](https://i-blog.csdnimg.cn/blog_migrate/6d6ec45787d2987c56703967ca62b455.png)
df
![9e56777e802020cdb6bbfda600c1ec14.png](https://i-blog.csdnimg.cn/blog_migrate/40672484d2df0b8133c85efe7562a8cd.png)
3) DataFrame 列操作
DataFrame 列的选取,设置和删除列的工作原理与类似的 dict 操作相同。
df
![c9da11311b07f5f02bcc97a6e37ec2cd.png](https://i-blog.csdnimg.cn/blog_migrate/6b902822049696cf09c4a1475db991a7.png)
type
pandas.core.frame.DataFrame
type
pandas.core.series.Series
4) 增加列
df2
![8cde544e7ae27b96de6e80a2a41182fc.png](https://i-blog.csdnimg.cn/blog_migrate/ee0d70627bd4650044da517a1f887c7d.png)
df2
![d95f135cc8956aec47f2289b3d4648fa.png](https://i-blog.csdnimg.cn/blog_migrate/2dc6dff679a07f89dcaaad50277a2f7e.png)
df2
![ac2877b152d7098a6ae59608b164c904.png](https://i-blog.csdnimg.cn/blog_migrate/3018cf1cfa2e0c4cbb566bb8857f9925.png)
df2
![f144bf683cc1c8621fa975292b95a18c.png](https://i-blog.csdnimg.cn/blog_migrate/8ae9ea17e2315aaacc830f5dde7d3165.png)
#如果新增的列中传入的是 Series 并且索引不完全相同,那么会默认按照索引对齐,没有指定填充值的位置默认用空值进行填充:
![039fb0011292762a18d5d435b9a18171.png](https://i-blog.csdnimg.cn/blog_migrate/58b506e005e7ca2656851a39d26a2a7d.png)
insert方法插入列
df2
![3a7c2f7c8b723fc18cce6451a7f4eb47.png](https://i-blog.csdnimg.cn/blog_migrate/05b1c193e250ccff80d0ce40a1ef9781.png)
df2
![bc4204310c102410b450296006918aaa.png](https://i-blog.csdnimg.cn/blog_migrate/ab8465beb0efe884dffab79173c3f75d.png)
df2
![4c3758f14f9c3c7232628df1ee27a68f.png](https://i-blog.csdnimg.cn/blog_migrate/803e1b46e92e67fa241a8f8807276782.png)
删除或移出列
del
![c1616d3d6e8a9673bcff737e6fa65f2b.png](https://i-blog.csdnimg.cn/blog_migrate/92c5ddb0765d5f2e62cd428f0c95596e.png)
df2
![ca1d467a8b47f4d4982a89e45a1624ee.png](https://i-blog.csdnimg.cn/blog_migrate/8a455c2dca8a49334140af9726d2e737.png)
df2
![0eba59d93e5e77c29c0e8a04f1f0e626.png](https://i-blog.csdnimg.cn/blog_migrate/213e5a1d557e12ba81514a1ad77d88fb.png)
df2
![4fe5d83cabaea0b21d80ae2cd94be5c5.png](https://i-blog.csdnimg.cn/blog_migrate/663b46fe19ff609d86f39ab1325a899c.png)
df2
![509837a52b0e1c4fa740dc015b934b46.png](https://i-blog.csdnimg.cn/blog_migrate/c88fe272b2d0c62a56e5b54760426d0c.png)
分配列的操作
assign方法,依据现有列派生的新列
df2
![79d92956e238abd4ecbc3139ae508b79.png](https://i-blog.csdnimg.cn/blog_migrate/a1527421edd5e9e6a43f506d761aa18c.png)
df2
![ece426dc9258a8fbb5cc535ea2ebdae2.png](https://i-blog.csdnimg.cn/blog_migrate/0bb2bd2fb18f583f224625750da8b055.png)
df2
![7a1d8045d738d909520492e7de0a0433.png](https://i-blog.csdnimg.cn/blog_migrate/da534ee4414af450efd6f6341a20ecf6.png)
df2
![b07be96d1af59a1ef63f357cc5a0c4cb.png](https://i-blog.csdnimg.cn/blog_migrate/2d207a0bb6282aa6fe31992ad7292845.png)
5) 调用属性和方法
df2
![1f3975b7c9a7e8e799d07202141397bb.png](https://i-blog.csdnimg.cn/blog_migrate/bf39b3427571375858d00ebc752a017e.png)
df2
![a6ff09b397114b92fb5691d55129e7c5.png](https://i-blog.csdnimg.cn/blog_migrate/7b237da7e708086c7d61149144c95f09.png)
df2
![73899228588adbc152686243dbaba4dc.png](https://i-blog.csdnimg.cn/blog_migrate/cb8a51817c0f87d3fd3754ce6071cb21.png)
df2
(4, 9)
df2
![80e5944fba278b093baca894003c8352.png](https://i-blog.csdnimg.cn/blog_migrate/6b695d90df3dbab6814d60bf2c4cfd28.png)
6) 索引/选择
索引/选择的基本语法如下:
![28ba59807b2bbe7092455a062429eae0.png](https://i-blog.csdnimg.cn/blog_migrate/691a7b867cef436f68272f53c7d41403.png)
这是Pandas中非常强大的特性,不理解这一特性有时就会造成一些麻烦
df3 = pd.DataFrame({'A':[1,2,3]},index=[1,2,3])
df4 = pd.DataFrame({'A':[1,2,3]},index=[3,1,2])
df3-df4 #由于索引对齐,因此结果不是0
![6a4899362d329f5752cb3c4bb0bc8ecc.png](https://i-blog.csdnimg.cn/blog_migrate/0ce8c96372e45f74c95f62b7126e3356.png)
根据类型选择列
df
![a1cb92767e531562d791da2e4d4a47b7.png](https://i-blog.csdnimg.cn/blog_migrate/df3b2ba6976805f43afde70675bd5f5b.png)
df
![7570ee8f791677c62087812d64537234.png](https://i-blog.csdnimg.cn/blog_migrate/8144468964cac9bbbbc0ede78aaeeea2.png)
7)基于标签的索引
.loc 是基于标签的索引,必须使用数据的标签属性,否则会返回一个异常。
基于标签索引的基本语法 : df.loc[行索引,列索引]
逗号之前是切取的行信息,逗号之后是切取的列信息
只切取行信息返回所有列信息的时候,列索引和逗号可以省略
只切取列信息返回所有行信息的时候,行索引和冒号不能省略,用冒号表示切取所有行.
df2
![535c2f950e176a8aec5ccc9598f2e653.png](https://i-blog.csdnimg.cn/blog_migrate/a91b022d3475ad2161d95621ea6cfdaa.png)
df2
![a5db57007e6371668f6f076eb0586728.png](https://i-blog.csdnimg.cn/blog_migrate/6d74f7b4e3108ffd95d50d7ce46949e2.png)
直接切取一行信息的时候 - df["行信息":"行信息"] 返回是dataframe
- (基于标签的索引)df.loc["行信息"] 返回的是series
df2
![c2beac0ab9d4187b4f0d3b887ab93386.png](https://i-blog.csdnimg.cn/blog_migrate/f599618e67728f3cd542f4886cd2fb09.png)
df2
![15fa4503ff091b7d64eeb41cef8c1127.png](https://i-blog.csdnimg.cn/blog_migrate/6d224c2566d7af4fc18f914b1c69e3be.png)
df2
![b18600e8e6d3390a03bffaedea66e87a.png](https://i-blog.csdnimg.cn/blog_migrate/6d5475d04e0aaa5522e27c86cb3b9679.png)
df2
![3b5516153d22c40d7cf11a2ea61d2c7c.png](https://i-blog.csdnimg.cn/blog_migrate/333a2260689179119f83ce6bbe1257f1.png)
df2
![612f2aa179e73b2e3a634b39831e8d31.png](https://i-blog.csdnimg.cn/blog_migrate/d2e3ed4b101be884b2eebd8cae425d5d.png)
df2
![3784264a3b7dcd13ae0c75e2bc4a4d35.png](https://i-blog.csdnimg.cn/blog_migrate/e165cf701b0f5fed2667d49c22f34da4.png)
df2
![4e7915525076421a734154f130c90883.png](https://i-blog.csdnimg.cn/blog_migrate/bf1fed4a7d5fbbb24c086ea11025954d.png)
df2
![c564fa6e05c3004ec362ca7401e784ad.png](https://i-blog.csdnimg.cn/blog_migrate/f0edb650f629ffabb050e7bc1ead9e9e.png)
指向具体一列的某个记录值 df.at[行索引,列索引]
df2
'赵一'
df2
125.0
df2
'赵一'
df2
![2550e13c8e63ba2243712eed71ca5102.png](https://i-blog.csdnimg.cn/blog_migrate/56f0e5b0f36fc8878b94d4f73dee970e.png)
.loc 同时也可以用来扩展数据的列:
df2
![f97209a02d3798accc20c834bc4d0d0d.png](https://i-blog.csdnimg.cn/blog_migrate/ed707352314c78464cf5f2d2d37e1f18.png)
新建一列,新建列里边的信息是基于某一已经存在的列,并且对该存在列中的每个信息进行相同的函数(X)操作,用apply()函数,函数特点是它的参数是其他函数(X)
df2
![112357fd2708a4693b81fb0510d77de9.png](https://i-blog.csdnimg.cn/blog_migrate/f376dc170108ebb4abef295424a7cb65.png)
df2
![50a82f073bafe576c4728417ec3b7515.png](https://i-blog.csdnimg.cn/blog_migrate/3c913e8c9f1ef20e86037a4ab3678f14.png)
.loc 同时也可以用来扩展数据的行:
df2
![283feeff5bd6081fb69d92207e653f7f.png](https://i-blog.csdnimg.cn/blog_migrate/a960063026d40650945cd5858450e5e4.png)
df2
![680e84d62ac05bdca5407f2851b7fddd.png](https://i-blog.csdnimg.cn/blog_migrate/75f259e72556ff128bcaf30465a5fcee.png)
8) 将Series转换为DataFrame
s
![95ae91f43c9eac15766812daded7cd5c.png](https://i-blog.csdnimg.cn/blog_migrate/69dd584252ff8bf09191b090a6a93162.png)
s
![da93d94d2c122e27fc97fb85308a8aa9.png](https://i-blog.csdnimg.cn/blog_migrate/f8f2b63a805bc30fb365829cba27bc6d.png)
使用T符号可以转置
s
![fc18f81aa1dc402386ba48a7f9e90dcd.png](https://i-blog.csdnimg.cn/blog_migrate/58b9088ee5c53edc4f9165ef827e4ea1.png)
四、常用基本函数
df
1) head和tail
df
![e30556dc0dd84b5e1da432d9bf34258c.png](https://i-blog.csdnimg.cn/blog_migrate/61e49d1e968bb0987ed497c53a76400f.png)
df
![8495c85ae6519af84fa2505a4f99d0f4.png](https://i-blog.csdnimg.cn/blog_migrate/142ee54c40aac05c1651166cafec2cc1.png)
df
![de71b71b114ea8bb3b6f9b31a3d43220.png](https://i-blog.csdnimg.cn/blog_migrate/4b052ad45a124b7362ab08491c0e7059.png)
2) unique和nunique
df
7
df
![ebc5af7d51cf6c9f343c74b55f173680.png](https://i-blog.csdnimg.cn/blog_migrate/ee17347ee3a1ea41ada6439cba349b93.png)
3) count和value_counts
df
![565cf23d9fdc579281821c1a9ce77192.png](https://i-blog.csdnimg.cn/blog_migrate/eeb328cca4a679beb9c3c4e763bc50b0.png)
df
35
df
![ab511ccdce1964d0d6c7dba16b32970a.png](https://i-blog.csdnimg.cn/blog_migrate/00fb6cf8f23e67074dd604900cac1e39.png)
4) describe和info
df
![a5092b5925aaccd8c49045b6de50c451.png](https://i-blog.csdnimg.cn/blog_migrate/59208daa85ec3f8787b824ff25e8f70d.png)
df
![c6809cb5e1e9318fb665e69c55c6fe98.png](https://i-blog.csdnimg.cn/blog_migrate/64a0e6c9e006f6fd945ca06a4b26e084.png)
df
![b1968c6c71289a0a4ebb23faefb39825.png](https://i-blog.csdnimg.cn/blog_migrate/3fb555ac61c8ecf3884751712460a983.jpeg)
df
![e78b3e02ad7d1c58f33cb7973dcca7c7.png](https://i-blog.csdnimg.cn/blog_migrate/2d421dd0237091ad079fed36246fe50d.png)
5) idxmax和nlargest
df
5
df
![5d0af86e9ef47f00919f6d3c3d51ebd8.png](https://i-blog.csdnimg.cn/blog_migrate/afd1ea621bf0c6f1f5640c6e789dedf8.png)
6) clip和replace
clip和replace是两类替换函数
clip是对超过或者低于某些值的数进行截断
df
![7f18de34b422113bdc9dfe3465124821.png](https://i-blog.csdnimg.cn/blog_migrate/a3e0cc78bf7034ec760b0e930f65630d.png)
df
![b91a3b4a29a90cec37568dea702203b3.png](https://i-blog.csdnimg.cn/blog_migrate/eae310431716802fbccb0ea73876823d.png)
df
16.924244897959188
replace是对某些值进行替换
df
![154cc369ec76d47a901c21904720236d.png](https://i-blog.csdnimg.cn/blog_migrate/70d2748f53393a5fb9e7f3f2f0345694.png)
df
![6b56b523e360f73afa84cee7af0138e6.png](https://i-blog.csdnimg.cn/blog_migrate/7fa4dd5721d6d1c7ed53d79dc5d756f8.png)
通过字典,可以直接在表中修改
df
![93b4248498b6e065fdd324a6b7dd33ec.png](https://i-blog.csdnimg.cn/blog_migrate/b06ac82282b41abbed5ac9b866642471.png)
7) apply函数
apply是一个自由度很高的函数,对于Series,它可以迭代每一列的值操作:
df
![3cb6ccff4776dfaf32a6b87985cedf03.png](https://i-blog.csdnimg.cn/blog_migrate/453719dd7eea9aaa090c651ad96f55a6.png)
对于DataFrame,它可以迭代每一个列操作:
df
![419abd44ab2367e46f42d1cbda702de7.png](https://i-blog.csdnimg.cn/blog_migrate/6238db7f6fcd272de236f2b069cb21ad.png)
五、排序
1) 索引排序
df
![36c817f1d035e04375c9ed9a2007aab2.png](https://i-blog.csdnimg.cn/blog_migrate/542d5c8da6289b64e62a4bb2b1b50b79.png)
df
![fd03d85903e08a3800a91111ff831eaa.png](https://i-blog.csdnimg.cn/blog_migrate/a189c1134026676244d9fe0b3b08b25b.png)
df
![6eeeb1a119557bb4d2967d2d082e983b.png](https://i-blog.csdnimg.cn/blog_migrate/479f317cd8477e7e0764ec13562c7eea.png)
2) 值排序
df
![08217be37b8e75b89ebffbc3f635d635.png](https://i-blog.csdnimg.cn/blog_migrate/235c0f124272737a65b30dc674da57d0.png)
多个值排序,即先对第一层排,在第一层相同的情况下对第二层排序
df
![0f2fd88ac4c908e081d8d2d3d5fae687.png](https://i-blog.csdnimg.cn/blog_migrate/3f33ed056bff3897d34ca9910ab591aa.png)
六、问题与练习
1. 问题
【问题一】 Series和DataFrame有哪些常见属性和方法?
【问题二】 value_counts会统计缺失值吗?
【问题三】 与idxmax和nlargest功能相反的是哪两组函数?
【问题四】 在常用函数一节中,由于一些函数的功能比较简单,因此没有列入,现在将它们列在下面,请分别说明它们的用途并尝试使用。
sum/mean/median/mad/min/max/abs/std/var/quantile/cummax/cumsum/cumprod
【问题五】 df.mean(axis=1)是什么意思?它与df.mean()的结果一样吗?第一问提到的函数也有axis参数吗?怎么使用?
2. 练习
【练习一】 现有一份关于美剧《权力的游戏》剧本的数据集,请解决以下问题:
(a)在所有的数据中,一共出现了多少人物?
(b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话?
(c)以单词计数,谁说了最多的单词?
df5
![d3784c515f6563ed768199967bc6dddd.png](https://i-blog.csdnimg.cn/blog_migrate/03fdb6c877ddedabd78cf6dfb8454ea4.png)
(a)在所有的数据中,一共出现了多少人物?
(b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话?
(c)以单词计数,谁说了最多的单词?
【练习二】现有一份关于科比的投篮数据集,请解决如下问题:
(a)哪种action_type和combined_shot_type的组合是最多的?
(b)在所有被记录的game_id中,遭遇到最多的opponent是一个支?
df6
![c55750d3810a34ddf2f902b7f2b565d6.png](https://i-blog.csdnimg.cn/blog_migrate/49cd492baa0634f10c65ed5ff99e6060.png)
(a)哪种action_type和combined_shot_type的组合是最多的?
(b)在所有被记录的game_id中,遭遇到最多的opponent是一个支?
代码:
六、参考资料
1、Python for Data Analysis Wes McKinney著
2、Pandas Cookbook Theodore Petrou著
3、User Guide Pandas开发团队编写