Imagine you received album recommendations from your friends and compiled all of the recomendations into a table, with specific information about each album.
The table has one row for each movie and several columns:
The dataset can be seen below:
Artist | Album | Released | Length | Genre | Music recording sales (millions) | Claimed sales (millions) | Released | Soundtrack | Rating (friends) |
---|---|---|---|---|---|---|---|---|---|
Michael Jackson | Thriller | 1982 | 00:42:19 | Pop, rock, R&B | 46 | 65 | 30-Nov-82 | 10.0 | |
AC/DC | Back in Black | 1980 | 00:42:11 | Hard rock | 26.1 | 50 | 25-Jul-80 | 8.5 | |
Pink Floyd | The Dark Side of the Moon | 1973 | 00:42:49 | Progressive rock | 24.2 | 45 | 01-Mar-73 | 9.5 | |
Whitney Houston | The Bodyguard | 1992 | 00:57:44 | Soundtrack/R&B, soul, pop | 26.1 | 50 | 25-Jul-80 | Y | 7.0 |
Meat Loaf | Bat Out of Hell | 1977 | 00:46:33 | Hard rock, progressive rock | 20.6 | 43 | 21-Oct-77 | 7.0 | |
Eagles | Their Greatest Hits (1971-1975) | 1976 | 00:43:08 | Rock, soft rock, folk rock | 32.2 | 42 | 17-Feb-76 | 9.5 | |
Bee Gees | Saturday Night Fever | 1977 | 1:15:54 | Disco | 20.6 | 40 | 15-Nov-77 | Y | 9.0 |
Fleetwood Mac | Rumours | 1977 | 00:40:01 | Soft rock | 27.9 | 40 | 04-Feb-77 | 9.5 |
In Python, there are different data types: string, integer and float. These data types can all be contained in a tuple as follows:
tuple1=("disco",10,1.2 )
tuple1
('disco', 10, 1.2)
The type of variable is a tuple.
type(tuple1)
tuple
Each element of a tuple can be accessed via an index. The following table represents the relationship between the index and the items in the tuple. Each element can be obtained by the name of the tuple followed by a square bracket with the index number:
We can print out each value in the tuple:
print( tuple1[0])
print( tuple1[1])
print( tuple1[2])
disco
10
1.2
We can print out the type of each value in the tuple:
print( type(tuple1[0]))
print( type(tuple1[1]))
print( type(tuple1[2]))
<class 'str'>
<class 'int'>
<class 'float'>
We can also use negative indexing. We use the same table above with corresponding negative values:
We can obtain the last element as follows (this time we will not use the print statement to display the values):
tuple1[-1]
1.2
We can display the next two elements as follows:
tuple1[-2]
10
tuple1[-3]
'disco'
We can concatenate or combine tuples by using the + sign:
tuple2=tuple1+("hard rock", 10)
tuple2
('disco', 10, 1.2, 'hard rock', 10)
We can slice tuples obtaining multiple values as demonstrated by the figure below:
We can slice tuples, obtaining new tuples with the corresponding elements:
tuple2[0:3]
('disco', 10, 1.2)
We can obtain the last two elements of the tuple:
tuple2[3:5]
('hard rock', 10)
We can obtain the length of a tuple using the length command:
len(tuple2)
5
This figure shows the number of elements:
Consider the following tuple:
Ratings =(0,9,6,5,10,8,9,6,2)
We can assign the tuple to a 2nd variable:
Ratings1=Ratings
Ratings
(0, 9, 6, 5, 10, 8, 9, 6, 2)
We can sort the values in a tuple and save it to a new tuple:
RatingsSorted=sorted(Ratings )
RatingsSorted
[0, 2, 5, 6, 6, 8, 9, 9, 10]
A tuple can contain another tuple as well as other more complex data types. This process is called 'nesting'. Consider the following tuple with several elements:
NestedT =(1, 2, ("pop", "rock") ,(3,4),("disco",(1,2)))
Each element in the tuple including other tuples can be obtained via an index as shown in the figure:
print("Element 0 of Tuple: ", NestedT[0])
print("Element 1 of Tuple: ", NestedT[1])
print("Element 2 of Tuple: ", NestedT[2])
print("Element 3 of Tuple: ", NestedT[3])
print("Element 4 of Tuple: ", NestedT[4])
Element 0 of Tuple: 1
Element 1 of Tuple: 2
Element 2 of Tuple: ('pop', 'rock')
Element 3 of Tuple: (3, 4)
Element 4 of Tuple: ('disco', (1, 2))
We can use the second index to access other tuples as demonstrated in the figure:
We can access the nested tuples :
print("Element 2,0 of Tuple: ", NestedT[2][0])
print("Element 2,1 of Tuple: ", NestedT[2][1])
print("Element 3,0 of Tuple: ", NestedT[3][0])
print("Element 3,1 of Tuple: ", NestedT[3][1])
print("Element 4,0 of Tuple: ", NestedT[4][0])
print("Element 4,1 of Tuple: ", NestedT[4][1])
Element 2,0 of Tuple: pop
Element 2,1 of Tuple: rock
Element 3,0 of Tuple: 3
Element 3,1 of Tuple: 4
Element 4,0 of Tuple: disco
Element 4,1 of Tuple: (1, 2)
We can access strings in the second nested tuples using a third index:
NestedT[2][1][0]
'r'
NestedT[2][1][1]
'o'
We can use a tree to visualise the process. Each new index corresponds to a deeper level in the tree:
Similarly, we can access elements nested deeper in the tree with a fourth index:
NestedT[4][1][0]
1
NestedT[4][1][1]
2
The following figure shows the relationship of the tree and the element NestedT[4][1][1]:
<img src ='https://ibm.box.com/shared/static/9y5s7515zwzc9v6i4f67yj3np2fv9evs.gif'width = 750, align = "center">
Consider the following tuple:
genres_tuple = ("pop", "rock", "soul", "hard rock", "soft rock", \
"R&B", "progressive rock", "disco")
genres_tuple
('pop',
'rock',
'soul',
'hard rock',
'soft rock',
'R&B',
'progressive rock',
'disco')
len(genres_tuple)
8
genres_tuple[3]
'hard rock'
genres_tuple[3:6]
('hard rock', 'soft rock', 'R&B')
genres_tuple[0:2]
('pop', 'rock')
genres_tuple.index("disco")
7
C_tuple=(-5,1,-3)
sorted(C_tuple)
[-5, -3, 1]
Your notebook saves automatically every two minutes. You can manually save by going to File > Save and Checkpoint. You can come back to this notebook anytime by clicking this notebook under the "Recent Notebooks" list on the right-hand side.
Did you know there are other notebook options? Click on the > symbol to the left of the notebook:
Joseph Santarcangelo has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.