引用数据库
import pandas as pd
s=pd.Series( data, index, dtype, copy,name)
参数名称 | 描述 |
---|---|
data | 输入的数据,可以是列表、常量、ndarray 数组等。 |
index | 索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。 |
dtype | dtype表示数据类型,如果没有提供,则会自动判断得出。 |
copy | 表示对 data 进行拷贝,默认为 False。 |
name | 接收string或list。表示Series对象的名称。默认为None |
import pandas as pd
my_list=[1,2,3,4]
my_Series=pd.Series(my_list)
print(my_list)
输出结果如下:
0 1
1 2
2 3
3 4
dtype: int64
import pandas as pd
import numpy as np
my_array=np.array([1,2,3,4])
s=pd.Series(my_array)
print(s)
输出结果如下:
0 1
1 2
2 3
3 4
dtype: int32
import pandas as pd
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print(s)
输出结果如下:
a 0.0
b 1.0
c 2.0
dtype: float64
如果 data 是标量值,则必须提供索引,示例如下:
import pandas as pd
s = pd.Series(5, index=[0, 1, 2, 3])
print(s)
输出如下:
0 5
1 5
2 5
3 5
dtype: int64
以上面的dict方法举例:
import pandas as pd
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print(s)
输出结果如下:
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
其中需要注意的是索引没有匹配值时会返回NAN值
# 访问Series中数据的两种方法
import pandas as pd
s1 = pd.Series([ 75, 90, 61],index=['张三', '李四', '陈五'])
print(s1[0]) #通过元素储存位置访问
print(s1['张三']) #通过指定索引访问
# 结果均为 75
数据切片的概念源于Numpy数组,Series对象使用类似NumPy中ndarray的数据访问方法实现切片操作。
#Series的切片操作
import pandas as pd
s1 = pd.Series([ 75, 90, 61, 59],index=['a', 'b', 'c', 'd'])
s1[1:3]
import pandas as pd
import numpy as np
my_array=np.array([1,2,3,4])
s=pd.Series(my_array,['a','b','c','d'])
print(s)
print(s[s.index>'a'])
输出:
a 1
b 2
c 3
d 4
dtype: int32
b 2
c 3
d 4
dtype: int32
可以直接通过赋值的方法修改Series中的对应值。
# 修改Series中的值
import pandas as pd
s1 = pd.Series([ 75, 90, 61],index=['张三', '李四', '陈五'])
s1['张三'] = 60 #通过指定索引访问
s1[1] = 60 #通过元素储存位置访问
print(s1)
输出数据:
张三 60
李四 60
陈五 61
dtype: int64
Pandas会根据索引index索引对相应数据进行计算。如代码所示,可以直接对Series结构进行加减乘除运算符,当出现index不匹配的情况时会输出NaN。
import pandas as pd
sr1 = pd.Series([1, 2, 3, 4],['a','b','c','d'])
sr2 = pd.Series([1, 5, 8, 9],['a','c','e','f'])
print(sr2 - sr1)
输出:
a 0.0
b NaN
c 2.0
d NaN
e NaN
f NaN
dtype: float64
名称 | 属性 |
---|---|
axes | 以列表的形式返回所有行索引标签。 |
dtype | 返回对象的数据类型。 |
empty | 返回一个空的 Series 对象。 |
ndim | 返回输入数据的维数。 |
size | 返回输入数据的元素数量。 |
values | 以 ndarray 的形式返回 Series 对象。 |
index | 返回一个RangeIndex对象,用来描述索引的取值范围。 |
import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(6))
print(s)
print("输出series中数据")
print(s.values)
输出:
0 -0.502100
1 0.696194
2 -0.982063
3 0.416430
4 -1.384514
5 0.444303
dtype: float64
输出series中数据
[-0.50210028 0.69619407 -0.98206327 0.41642976 -1.38451433 0.44430257]
import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print ("The axes are:")
print(s.axes)
输出:
The axes are:
[RangeIndex(start=0, stop=5, step=1)]
类似list,通过append方法能够在原Series上插入(追加)新的Series。若只在原Series上插入单个值,则采用赋值方式即可
import pandas as pd
list1 = [0, 1, 2, 3, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
series1 = pd.Series([4, 5], index = ['f', 'g'])
# 追加Series
print('在series插入series1后为:\n', series.append(series1))
输出:
在series插入series1后为:
a 3
b 1
c 2
d 3
e 4
f 4
g 5
dtype: int64
import pandas as pd
list1 = [0, 1, 2, 3, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
series.drop('e', inplace = True)
print( series)
输出:
a 0
b 1
c 2
d 3
dtype: int64
unique()返回去重后的元素值
import pandas as pd
list1 = [0, 1, 2, 4, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
print(series.unique())
输出:
[0 1 2 4]
nunique()返回去重后的元素个数
import pandas as pd
list1 = [0, 1, 2, 4, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
print(series.nunique())
输出:
4
import pandas as pd
list1 = [0, 1, 2, 4, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
print(series.value_counts())
输出:
4 2
0 1
1 1
2 1
dtype: int64
list1 = [0, 1, 2, 4, 4]
series = pd.Series(list1, index = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’])
print(series.nunique())
输出:
```python
4
import pandas as pd
list1 = [0, 1, 2, 4, 4]
series = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'])
print(series.value_counts())
输出:
4 2
0 1
1 1
2 1
dtype: int64