series和读取外部数据

  • 一、为什么要学习pandas?
  • 二、pandas常用数据类型
  • 1. Series创建
  • 1.1 通过列表创建
  • 1.2 通过字典创建
  • 2. Series切片和索引
  • 2.1 根据索引和位置取值
  • 2.2 如何知道索引和具体的值
  • 三、pandas读取外部数据



一、为什么要学习pandas?

numpy已经能够帮助我们处理数据,能够结合matplotlib解决数据分析的问题,那么pandas学习目的在哪里?

numpy能够帮我们处理数值型数据,但是很多时候除了数值之外,还有字符串、时间序列

比如:通过爬虫获取到存储在数据库的数据
比如:之前YouTube中除了数值还有国家的信息、视频的分类(tag)信息、标题信息等

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

二、pandas常用数据类型

  • Series 一维,带标签数组,标签指的索引
  • dataframe二维,Series容器

1. Series创建

1.1 通过列表创建

代码如下(示例):

In [22]:import pandas as pd
In [23]:pd.Series([1,2,31,12,3,4])
Out[23]: 
0     1
1     2
2    31
3    12
4     3
5     4
dtype: int64

In [24]:t = pd.Series([1,2,31,12,3,4])

In [25]:type(t)
Out[25]: pandas.core.series.Series

In [26]:t
Out[26]: 
0     1
1     2
2    31
3    12
4     3
5     4
dtype: int64

指定索引

In [27]:t1 = pd.Series([1,23,2,2,1],index=list("abcde"))
In [28]:t1
Out[28]: 
a     1
b    23
c     2
d     2
e     1
dtype: int64

In [33]:t3 = pd.Series(np.arange(5),index=list("abcde"))
In [34]:t3
Out[34]: 
a    0
b    1
c    2
d    3
e    4
dtype: int64

1.2 通过字典创建

键对应索引

In [29]:temp_dict = {"name":"xiaoli","age":21,"tell":10086}
In [30]:t2 = pd.Series(temp_dict)
In [31]:t2
Out[31]: 
name    xiaoli
age         21
tell     10086
dtype: object

重新给其指定其他的索引之后,如果能够对应上,就取其值,如果不能,就为Nan,这时pandas会自动根据数据类型更改series的dtype类型,变为float类型

更改dtype类型的方式和numpy一样,t.astype()即可

2. Series切片和索引

2.1 根据索引和位置取值

某一个具体的值

In [35]:t2
Out[35]: 
name    xiaoli
age         21
tell     10086
dtype: object

In [36]:t2["age"]
Out[36]: 21

In [37]:t2[1]
Out[37]: 21

In [38]:t2[0]
Out[38]: 'xiaoli'

In [39]:t2["name"]
Out[39]: 'xiaoli'

连续和不连续的多个值

In [41]:t2[:2]	#前开后闭
Out[41]: 
name    xiaoli
age         21
dtype: object

In [44]:t2[[0, 2]]
Out[44]: 
name    xiaoli
tell     10086
dtype: object

In [46]:t2[["age", "tell"]]
Out[46]: 
age        21
tell    10086
dtype: object

布尔索引

In [47]:t
Out[47]: 
0     1
1     2
2    31
3    12
4     3
5     4
dtype: int64

In [48]:t[t>10]
Out[48]: 
2    31
3    12
dtype: int64

切片索引

In [50]:t[1:7:2]
Out[50]: 
1     2
3    12
5     4
dtype: int64

切片:直接传入start end 或者步长即可
索引:一个的时候直接传入序号或者index,多个的时候传入序号或者index的列表

2.2 如何知道索引和具体的值

索引

In [52]:t2.index
Out[52]: Index(['name', 'age', 'tell'], dtype='object')

In [56]:len(t2.index)
Out[56]: 3

In [59]:list(t2.index)
Out[59]: ['name', 'age', 'tell']

In [60]:list(t2.index)[:2]
Out[60]: ['name', 'age']

索引的值

In [54]:t2.values
Out[54]: array(['xiaoli', 21, 10086], dtype=object)

Series对象本质上由两个数组构成,一个数组构成对象的键(index, 索引),一个数组构成对象的值(values),键->值

ndarray的很多方法都可以运用于series类型,比如argmax,clip,series具有where方法,但是结果和adarray不同

三、pandas读取外部数据

现在假设有一组关于狗名字的统计数据,为了观察这组数据的情况,该怎么做?

读取csv文件

import pandas as pd

# pandas读取csv中的文件
dogname = pd.read_csv(".../dogNames2.csv")
print(dogname)

对于数据库比如mysql或者mongodb中的数据如何使用?
pr.read_sql(sql_sentence, connection) 传入sql语句和链接