In order to pretty print the data, I am using tabulate
library in python.
Here is the code I am using :
train = pd.read_csv('../misc/data/train.csv')
test = pd.read_csv('../misc/data/test.csv')
# Prints the head of data prettily :)
print(tabulate(train.head(), headers='keys', tablefmt='psql'))
The data is titanic dataset from kaggle. Now, I need to use tabulate on data that has float64 values. Here is the code that's giving me the error:
surv_age = train[train['Survived'] == 1]['Age'].value_counts()
dead_age = train[train['Survived'] == 0]['Age'].value_counts()
print(tabulate(surv_age, headers='keys', tablefmt='psql'))
df = pd.DataFrame([surv_age, dead_age])
df.index = ['Survived', 'Dead']
df.plot(kind='hist', stacked=True, figsize=(15, 8))
plt.xlabel('Age')
plt.ylabel('Number of passengers')
plt.show()
The error is: Traceback (most recent call last):
File "main.py", line 49, in <module>
print(tabulate(surv_age, headers='keys', tablefmt='psql'))
File "/usr/local/lib/python2.7/dist-packages/tabulate.py", line 1109, in tabulate
tabular_data, headers, showindex=showindex)
File "/usr/local/lib/python2.7/dist-packages/tabulate.py", line 741, in _normalize_tabular_data
rows = [list(row) for row in vals]
TypeError: 'numpy.float64' object is not iterable
Line 49 is the print(tabulate(..
line from the code.
How do I iterate float64
values of data so that I can pretty print in tabulate? If its not possible in tabulate
, please suggest an alternative way of pretty printing that can do so. Here is the sample of what tabulate can do :
+----+---------------+------------+----------+-----------------------------------------------------+--------+-------+---------+---------+------------------+---------+---------+------------+
| | PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
|----+---------------+------------+----------+-----------------------------------------------------+--------+-------+---------+---------+------------------+---------+---------+------------|
| 0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.25 | nan | S |
| 1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
| 2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | nan | S |
| 3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.1 | C123 | S |
| 4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.05 | nan | S |
+----+---------------+------------+----------+-----------------------------------------------------+--------+-------+---------+---------+------------------+---------+---------+------------+
Quoting from the
tabulate
documentation,Your variable
surv_age
is a 1-D numpy array of shape (342,). You will need to re-shape into a 2-D numpy array. You can do this easily usingnumpy.reshape
,You can also do this using
np.expand_dims
like this,