【pandas】总结

1. 为什么学习pandas:

因为pandas含有使得数据分析工作变得更快和更简单的高级数据结构和操作工具;pandas是基于Numpy来进行创建的,让以numpy为中心的应用变得更加简单;

numpy能够帮我们处理处理数值型数据,但是这还不够

很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等

比如:我们通过爬虫获取到了存储在数据库中的数据

比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等

所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据

2. Series一维数组

Series类型:这就是一种类似于一维数组的对象,它是由一组数据以及一组与之相关的数组标签组成(索引)。仅由一组数据即可产生最简单的Series;

在Series里,用.tolist()方法,Series取值,可以直接t["A"]

import pandas as pdimport string#输入列表,不给定index,生成SeriesIn [153]: pd.Series([1,2,3,4,5])Out[153]:0 11 22 33 44 5dtype: int64#输入列表,给定index,生成SeriesIn [137]: obj = pd.Series([1,2,3,4,5], index=list(string.ascii_lowercase[:5]))In [138]: objOut[138]:a 1b 2c 3d 4e 5dtype: int64In [100]: [string.ascii_lowercase[:5]]Out[100]: ['abcde']In [101]: list(string.ascii_lowercase[:5])Out[101]: ['a', 'b', 'c', 'd', 'e']In [139]: obj[0]Out[139]: 1In [140]: obj['a']Out[140]: 1In [141]: obj.indexOut[141]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')In [142]: obj.valuesOut[142]: array([1, 2, 3, 4, 5])In [150]: obj.tolist()Out[150]: [1, 2, 3, 4, 5]#输入字典,生成Series,key作为indexIn [16]: t = pd.Series({'name':'ethan', 'career':'AI engineer', 'lover':'jacky'})        In [17]: t                                                                                Out[17]:name            ethancareer    AI engineerlover           jackydtype: objectIn [21]: t[0]                                                                            Out[21]: 'ethan'In [22]: t['name']                                                                        Out[22]: 'ethan'In [23]: t.index                                                                         Out[23]: Index(['name', 'career', 'lover'], dtype='object')In [24]: t.values                                                                         Out[24]: array(['ethan', 'AI engineer', 'jacky'], dtype=object)In [25]: t.values[0]                                                                     Out[25]: 'ethan'In [28]: t4 = pd.Series(np.arange(10), index=list(string.ascii_lowercase[:10]))          In [29]: t4                                                                              Out[29]:a    0b    1c    2d    3e    4f    5g    6h    7i    8j    9dtype: int64In [36]: t4[0]                                                                           Out[36]: 0In [37]: t4.astype(np.float32)                                                           Out[37]:a    0.0b    1.0c    2.0d    3.0e    4.0f    5.0g    6.0h    7.0i    8.0j    9.0dtype: float32      

3. Series的索引和切片:

>>> tA 0B 1C 2D 3E 4F 5G 6H 7I 8J 9dtype: int64>>> t[2:10:2]C 2E 4G 6I 8dtype: int64>>> t[t>4]F 5G 6H 7I 8J 9dtype: int64>>> t[[2,5,7]]C 2F 5H 7dtype: int64>>> t[['A','F','g']]A 0.0F 5.0g NaNdtype: float64

4. DataFrame二维数组

DataFrame类型:DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同值的类型、数值、字符串、布尔值都可以(因此是一种比Numpy更高级的数据结构);DataFrame本身有行索引,也有列索引;DataFrame也可以理解成是由Series组成的一个字典;

DataFrame对象既有行索引,又有列索引

行索引,表明不同行,横向索引,叫index,0轴,axis=0

列索引,表名不同列,纵向索引,叫columns,1轴,axis=1,1是竖着的,所以1是纵向索引

>>> pd.DataFrame(np.arange(12).reshape(3,4))0 1 2 30 0 1 2 31 4 5 6 72 8 9 10 11>>> pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))W X Y Za 0 1 2 3b 4 5 6 7c 8 9 10 11>>> d2 = [{"name":"xaoming","age":30,"tel":10086},{"name":"xiaogang","age":32,"tel":10010},{"name":"xiaoqiang","tel":191}]>>> d2[{'name': 'xaoming', 'age': 30, 'tel': 10086}, {'name': 'xiaogang', 'age': 32, 'tel': 10010}, {'name': 'xiaoqiang', 'tel': 191}]>>> t2 = pd.DataFrame(d2)>>> t2name age tel0 xaoming 30.0 100861 xiaogang 32.0 100102 xiaoqiang NaN 191>>>t2.to_dict(){'name': {0: 'xaoming', 1: 'xiaogang', 2: 'xiaoqiang'},'age': {0: 30.0, 1: 32.0, 2: nan},'tel': {0: 10086, 1: 10010, 2: 191}}>>> t2.indexRangeIndex(start=0, stop=3, step=1)>>> t2.columnsIndex(['name', 'age', 'tel'], dtype='object')>>> t2.valuesarray([['xaoming', 30.0, 10086],['xiaogang', 32.0, 10010],['xiaoqiang', nan, 191]], dtype=object)>>> t2.shape(3, 3)>>> t2.dtypesname objectage float64tel int64dtype: object>>> t2.info()RangeIndex: 3 entries, 0 to 2Data columns (total 3 columns):name 3 non-null objectage 2 non-null float64tel 3 non-null int64dtypes: float64(1), int64(1), object(1)memory usage: 200.0+ bytes>>> t2.describe()age telcount 2.000000 3.000000mean 31.000000 6762.333333std 1.414214 5691.068470min 30.000000 191.00000025% 30.500000 5100.50000050% 31.000000 10010.00000075% 31.500000 10048.000000max 32.000000 10086.000000In [235]: t2.head(2)Out[235]:name age tel0 xaoming 30.0 100861 xiaogang 32.0 10010In [236]: t2.tail(2)Out[236]:name age tel1 xiaogang 32.0 100102 xiaoqiang NaN 191In [238]: t2['name'][0]Out[238]: 'xaoming'In [239]: t2.sort_values(by="age")Out[239]:name age tel0 xaoming 30.0 100861 xiaogang 32.0 100102 xiaoqiang NaN 191#默认ascending = True,即升序操作In [240]: t2.sort_values(by="age", ascending = False)Out[240]:name age tel1 xiaogang 32.0 100100 xaoming 30.0 100862 xiaoqiang NaN 191

5. DataFrame索引切片

In [243]: t1Out[243]:A B C D E F G Ha 0 1 2 3 4 5 6 7b 8 9 10 11 12 13 14 15c 16 17 18 19 20 21 22 23d 24 25 26 27 28 29 30 31e 32 33 34 35 36 37 38 39f 40 41 42 43 44 45 46 47In [97]: t1[:5]                             Out[97]:    A   B   C   D   E   F   G   Ha   0   1   2   3   4   5   6   7b   8   9  10  11  12  13  14  15c  16  17  18  19  20  21  22  23d  24  25  26  27  28  29  30  31e  32  33  34  35  36  37  38  39In [98]: t1[:5]['A']                        Out[98]:a     0b     8c    16d    24e    32Name: A, dtype: int64In [99]: t1['A']                          Out[99]:a     0b     8c    16d    24e    32f     2Name: A, dtype: int64In [100]: t1['A'][:5]                    Out[100]:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部