Series is one-dimensional labeled array capable of holding any data type such as integers, strings, floating-point numbers, Python objects, etc. The axis labels are collectively referred to as the index.
Parameters:
- data : Contains data stored in Series.
- index : Index values must be unique and hashable, the same length as data.
-
-
- Default (0,1,2,….,n) if no index is passed.
-
-
- dtype : Data type for the output Series.
- copy : bool(Default-False). Copy input data
Create Pandas Series
A Series accepts three types of input:
- Python dict
- Array
- Scalar value
1. Create a Series from Array:
If data is an ndarray, index must be the same length as data. If no index is passed, one will be created having values [0, …, len(data)-1].
Example:
import pandas as pd import numpy as np s1 = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e']) s2 = pd.Series(np.random.randn(5)) print("Series with Index:\n",s1) print("\nSeries with Deafult Index:\n",s2)
This produces the following result:
Series with Index: a -1.759479 b 0.846408 c -3.072220 d -1.358553 e 0.458533 dtype: float64 Series with Deafult Index: 0 -1.994786 1 0.210055 2 -0.335209 3 -0.433028 4 -0.640973 dtype: float64
2. Create a Series from Dict:
When dict is the input of Series and an index is not passed, the Series index will be ordered by the dict’s insertion order, if you’re using Python version >= 3.6 and Pandas version >= 0.23.
If you’re using Python < 3.6 or Pandas < 0.23, and an index is not passed, the Series index will be the lexically ordered list of dict keys.
Example:
import pandas as pd import numpy as np d = {'b': 1, 'a': 0, 'c': 2} s1 = pd.Series(d) s2 = pd.Series(d, index=['b', 'c', 'd', 'a']) print("Series without Index:\n",s1) print("\nSeries with Index:\n",s2)
Output:
Series without Index: a 0 b 1 c 2 dtype: int64 Series with Index: b 1.0 c 2.0 d NaN a 0.0 dtype: float64
Note: NaN (not a number) is the standard missing data marker used in pandas.
3. Create a Series from Scalar Value:
If data is a scalar value, an index must be provided. The value will be repeated to match the length of the index.
Example
import pandas as pd s1 = pd.Series(5., index=['a', 'b', 'c', 'd', 'e']) print("s1:\n",s1)
Output:
s1: a 5.0 b 5.0 c 5.0 d 5.0 e 5.0 dtype: float64
Accessing Data from Series with Position
Series acts very similarly to a numpy’s ndarray, and is a valid argument to most NumPy functions. However, operations such as slicing will also slice the index.
import pandas as pd import numpy as np s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e']) print("Series:\n",s) print("\nFirst element of Series :",s[0]) print("\nSlicing of Series:\n",s[:2]) log_s = np.log(s) print("\n logarithmic Series:\n",log_s)
Output:
Series: a 1 b 2 c 3 d 4 e 5 dtype: int64 First element of Series : 1 Slicing of Series: a 1 b 2 dtype: int64 logarithmic Series: a 0.000000 b 0.693147 c 1.098612 d 1.386294 e 1.609438 dtype: float64
Accessing Data Using Label (Index):
A Series is like a fixed-size dict in that you can get and set values by index label.
import pandas as pd import numpy as np d = {'b': 10, 'a': 5, 'c': 2,'d':8} s = pd.Series(d, index=['b', 'c', 'd', 'a']) print(s['a']) print(s['d']) print(s['f'])
This produces the following result:
5 8 ... KeyError: 'f'
Check Index present in Series
You can check the specified index is present or not in series using Python’s membership operator in and not in.
import pandas as pd s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e']) if 'e' in s: print("Index e is present in Series") print('f' in s)
# Output Index e is present in Series False
Convert to Numpy array
You can convert pandas series to numpy array bu using series.to_numpy() function.
import pandas as pd s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e']) arr = s.to_numpy() arr
# Output array([1, 2, 3, 4, 5])
. . .