test12

Advertisements

Read CSV file – Python

In [2]:
import pandas as pd
import os
os.getcwd()
tendulkar = pd.read_csv("/dbfs/FileStore/tables/tendulkar.csv", header='infer')
tendulkar.shape
#os.listdir('dbfs/FileStore/tables/')
Out[25]: (347, 12)

Read CSV file – Pyspark

In [4]:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext 
conf = SparkConf().setAppName("CDI Transform")
sc = SparkContext.getOrCreate()
sqlContext=SQLContext(sc)

tendulkar1= (sqlContext
         .read.format("com.databricks.spark.csv")
         .options(delimiter=',', header='true', inferschema='true')
         .load("/FileStore/tables/tendulkar.csv"))

Data frame Shape -Python

In [6]:
tendulkar.shape
Out[6]: (347, 12)

Data frame Shape -Pyspark

In [8]:
tendulkar1.count()
len(tendulkar1.columns)
def dfShape(df):
  return(df.count(),len(df.columns))

dfShape(tendulkar1)
Out[7]: (347, 12)

Data frame columns – Python

In [10]:
tendulkar.columns
Out[8]: Index([u’Runs’, u’Mins’, u’BF’, u’4s’, u’6s’, u’SR’, u’Pos’, u’Dismissal’, u’Inns’, u’Opposition’, u’Ground’, u’Start Date’], dtype=’object’)
In [11]:
tendulkar.columns
Out[24]: Index([u’Runs’, u’Mins’, u’BF’, u’4s’, u’6s’, u’SR’, u’Pos’, u’Dismissal’, u’Inns’, u’Opposition’, u’Ground’, u’Start Date’], dtype=’object’)

Data frame columns – Pyspark

In [13]:
tendulkar1.columns
Out[25]: [‘Runs’, ‘Mins’, ‘BF’, ‘4s’, ‘6s’, ‘SR’, ‘Pos’, ‘Dismissal’, ‘Inns’, ‘Opposition’, ‘Ground’, ‘Start Date’]

Dtypes – Python

In [15]:
tendulkar.dtypes
Out[26]: Runs object Mins object BF object 4s object 6s object SR object Pos object Dismissal object Inns object Opposition object Ground object Start Date object dtype: object

Dtypes -Pyspark

In [17]:
tendulkar1.dtypes
Out[27]: [(‘Runs’, ‘string’), (‘Mins’, ‘string’), (‘BF’, ‘string’), (‘4s’, ‘string’), (‘6s’, ‘string’), (‘SR’, ‘string’), (‘Pos’, ‘string’), (‘Dismissal’, ‘string’), (‘Inns’, ‘string’), (‘Opposition’, ‘string’), (‘Ground’, ‘string’), (‘Start Date’, ‘string’)]
In [18]:
tendulkar1.printSchema
Out[9]: <bound method DataFrame.printSchema of DataFrame[Runs: string, Mins: string, BF: string, 4s: string, 6s: string, SR: string, Pos: string, Dismissal: string, Inns: string, Opposition: string, Ground: string, Start Date: string]>

Select columns – Python

In [20]:
df=tendulkar[['Runs','Mins','BF']]
df.head(10)
Out[12]: Runs Mins BF 0 15 28 24 1 DNB – – 2 59 254 172 3 8 24 16 4 41 124 90 5 35 74 51 6 57 193 134 7 0 1 1 8 24 50 44 9 88 324 266

Select columns – Pyspark

In [22]:
df1=tendulkar1.select('Runs','Mins','BF')
df1.show(10)
+—-+—-+—+ Runs|Mins| BF| +—-+—-+—+ 15| 28| 24| DNB| -| -| 59| 254|172| 8| 24| 16| 41| 124| 90| 35| 74| 51| 57| 193|134| 0| 1| 1| 24| 50| 44| 88| 324|266| +—-+—-+—+ only showing top 10 rows

Filter rows by criteria – Python

In [24]:
b = tendulkar['Runs'] >50
df = tendulkar[b]
df.head(10)
Out[14]: Runs Mins BF 4s 6s SR Pos Dismissal Inns Opposition Ground \ 0 15 28 24 2 0 62.5 6 bowled 2 v Pakistan Karachi 1 DNB – – – – – – – 4 v Pakistan Karachi 2 59 254 172 4 0 34.3 6 lbw 1 v Pakistan Faisalabad 3 8 24 16 1 0 50 6 run out 3 v Pakistan Faisalabad 4 41 124 90 5 0 45.55 7 bowled 1 v Pakistan Lahore 5 35 74 51 5 0 68.62 6 lbw 1 v Pakistan Sialkot 6 57 193 134 6 0 42.53 6 caught 3 v Pakistan Sialkot 7 0 1 1 0 0 0 6 caught 2 v New Zealand Christchurch 8 24 50 44 3 0 54.54 6 caught 3 v New Zealand Christchurch 9 88 324 266 5 0 33.08 6 caught 1 v New Zealand Napier Start Date 0 15-Nov-89 1 15-Nov-89 2 23-Nov-89 3 23-Nov-89 4 1-Dec-89 5 9-Dec-89 6 9-Dec-89 7 2-Feb-90 8 2-Feb-90 9 9-Feb-90

Filtering by condition – Pyspark

In [26]:
df1=tendulkar1.filter(tendulkar1['Runs']>50)
df1.show(10)
+—-+—-+—+—+—+—–+—+———+—-+————–+————+———-+ Runs|Mins| BF| 4s| 6s| SR|Pos|Dismissal|Inns| Opposition| Ground|Start Date| +—-+—-+—+—+—+—–+—+———+—-+————–+————+———-+ 59| 254|172| 4| 0| 34.3| 6| lbw| 1| v Pakistan| Faisalabad| 23-Nov-89| 57| 193|134| 6| 0|42.53| 6| caught| 3| v Pakistan| Sialkot| 9-Dec-89| 88| 324|266| 5| 0|33.08| 6| caught| 1| v New Zealand| Napier| 9-Feb-90| 68| 216|136| 8| 0| 50| 6| caught| 2| v England| Manchester| 9-Aug-90| 114| 228|161| 16| 0| 70.8| 4| caught| 2| v Australia| Perth| 1-Feb-92| 111| 373|270| 19| 0|41.11| 4| caught| 2|v South Africa|Johannesburg| 26-Nov-92| 73| 272|208| 8| 1|35.09| 5| caught| 2|v South Africa| Cape Town| 2-Jan-93| 165| 361|296| 24| 1|55.74| 4| caught| 1| v England| Chennai| 11-Feb-93| 78| 285|213| 10| 0|36.61| 4| lbw| 2| v England| Mumbai| 19-Feb-93| 62| 128|114| 7| 0|54.38| 4| caught| 1| v Zimbabwe| Delhi| 13-Mar-93| +—-+—-+—+—+—+—–+—+———+—-+————–+————+———-+ only showing top 10 rows

Display unique contents of a column – Python

In [28]:
tendulkar = pd.read_csv("/dbfs/FileStore/tables/tendulkar.csv", header='infer')
tendulkar['Runs'].unique()
Out[64]: array([’15’, ‘DNB’, ’59’, ‘8’, ’41’, ’35’, ’57’, ‘0’, ’24’, ’88’, ‘5’, ’10’, ’27’, ’68’, ‘119*’, ’21’, ’11’, ’16’, ‘7’, ’40’, ‘148*’, ‘6’, ’17’, ‘114’, ‘111’, ‘1’, ’73’, ’50’, ‘9*’, ‘165’, ’78’, ’62’, ‘TDNB’, ’28’, ‘104*’, ’71’, ‘142’, ’96’, ’43’, ’11*’, ’34’, ’85’, ‘179’, ’54’, ‘4’, ‘0*’, ’52*’, ‘2’, ‘122’, ’31’, ‘177’, ’74’, ’42’, ’18’, ’61’, ’36’, ‘169’, ‘9’, ’15*’, ’92’, ’83’, ‘143’, ‘139’, ’23’, ‘148’, ’13’, ‘155*’, ’79’, ’47’, ‘113’, ’67’, ‘136’, ’29’, ’53’, ‘124*’, ‘126*’, ’44*’, ‘217’, ‘116’, ’52’, ’45’, ’97’, ’20’, ’39’, ‘201*’, ’76’, ’65’, ‘126’, ’36*’, ’69’, ‘155’, ’22*’, ‘103’, ’26’, ’90’, ‘176’, ‘117’, ’86’, ’12’, ‘193’, ’16*’, ’51’, ’32’, ’55’, ’37’, ’44’, ‘241*’, ’60*’, ‘194*’, ‘3’, ’32*’, ‘248*’, ’94’, ’22’, ‘109’, ’19’, ’14’, ’28*’, ’63’, ’64’, ‘101’, ‘122*’, ’91’, ’82’, ’56*’, ‘154*’, ‘153’, ’49’, ’10*’, ‘103*’, ‘160’, ‘100*’, ‘105*’, ‘100’, ‘106’, ’84’, ‘203’, ’98’, ’38’, ‘214’, ’53*’, ‘111*’, ‘146’, ’14*’, ’56’, ’80’, ’25’, ’81’, ’13*’], dtype=object)

Display unique contents of a column – Pyspark

In [30]:
from pyspark.sql.functions import *
tendulkar1= (sqlContext
         .read.format("com.databricks.spark.csv")
         .options(delimiter=',', header='true', inferschema='true')
         .load("/FileStore/tables/tendulkar.csv"))
tendulkar1.select('Runs').rdd.distinct().collect()
Out[75]: [Row(Runs=u’24’), Row(Runs=u’148*’), Row(Runs=u’100*’), Row(Runs=u’0′), Row(Runs=u’16’), Row(Runs=u’80’), Row(Runs=u’146′), Row(Runs=u’19’), Row(Runs=u’96’), Row(Runs=u’16*’), Row(Runs=u’76’), Row(Runs=u’51’), Row(Runs=u’88’), Row(Runs=u’9′), Row(Runs=u’35’), Row(Runs=u’64’), Row(Runs=u’41’), Row(Runs=u’11’), Row(Runs=u’25’), Row(Runs=u’59’), Row(Runs=u’1′), Row(Runs=u’49’), Row(Runs=u’91’), Row(Runs=u’81’), Row(Runs=u’122*’), Row(Runs=u’32*’), Row(Runs=u’18’), Row(Runs=u’60*’), Row(Runs=u’126*’), Row(Runs=u’DNB’), Row(Runs=u’53*’), Row(Runs=u’116′), Row(Runs=u’34’), Row(Runs=u’65’), Row(Runs=u’10’), Row(Runs=u’26’), Row(Runs=u’13*’), Row(Runs=u’36*’), Row(Runs=u’165′), Row(Runs=u’TDNB’), Row(Runs=u’139′), Row(Runs=u’68’), Row(Runs=u’27’), Row(Runs=u’217′), Row(Runs=u’86’), Row(Runs=u’6′), Row(Runs=u’203′), Row(Runs=u’47’), Row(Runs=u’98’), Row(Runs=u’74’), Row(Runs=u’53’), Row(Runs=u’111′), Row(Runs=u’105*’), Row(Runs=u’179′), Row(Runs=u’154*’), Row(Runs=u’13’), Row(Runs=u’28*’), Row(Runs=u’50’), Row(Runs=u’248*’), Row(Runs=u’7′), Row(Runs=u’14*’), Row(Runs=u’214′), Row(Runs=u’32’), Row(Runs=u’44’), Row(Runs=u’28’), Row(Runs=u’56*’), Row(Runs=u’52*’), Row(Runs=u’73’), Row(Runs=u’52’), Row(Runs=u’103*’), Row(Runs=u’126′), Row(Runs=u’67’), Row(Runs=u’12’), Row(Runs=u’20’), Row(Runs=u’201*’), Row(Runs=u’177′), Row(Runs=u’119*’), Row(Runs=u’103′), Row(Runs=u’4′), Row(Runs=u’10*’), Row(Runs=u’92’), Row(Runs=u’55’), Row(Runs=u’84’), Row(Runs=u’142′), Row(Runs=u’31’), Row(Runs=u’45’), Row(Runs=u’44*’), Row(Runs=u’111*’), Row(Runs=u’29’), Row(Runs=u’0*’), Row(Runs=u’113′), Row(Runs=u’39’), Row(Runs=u’241*’), Row(Runs=u’15’), Row(Runs=u’21’), Row(Runs=u’69’), Row(Runs=u’117′), Row(Runs=u’193′), Row(Runs=u’176′), Row(Runs=u’5′), Row(Runs=u’100′), Row(Runs=u’15*’), Row(Runs=u’160′), Row(Runs=u’153′), Row(Runs=u’9*’), Row(Runs=u’79’), Row(Runs=u’54’), Row(Runs=u’85’), Row(Runs=u’143′), Row(Runs=u’124*’), Row(Runs=u’61’), Row(Runs=u’42’), Row(Runs=u’136′), Row(Runs=u’71’), Row(Runs=u’38’), Row(Runs=u’14’), Row(Runs=u’22’), Row(Runs=u’82’), Row(Runs=u’2′), Row(Runs=u’148′), Row(Runs=u’11*’), Row(Runs=u’101′), Row(Runs=u’94’), Row(Runs=u’78’), Row(Runs=u’57’), Row(Runs=u’90’), Row(Runs=u’37’), Row(Runs=u’62’), Row(Runs=u’43’), Row(Runs=u’109′), Row(Runs=u’104*’), Row(Runs=u’169′), Row(Runs=u’155*’), Row(Runs=u’194*’), Row(Runs=u’17’), Row(Runs=u’23’), Row(Runs=u’3′), Row(Runs=u’83’), Row(Runs=u’106′), Row(Runs=u’97’), Row(Runs=u’155′), Row(Runs=u’22*’), Row(Runs=u’56’), Row(Runs=u’114′), Row(Runs=u’122′), Row(Runs=u’36’), Row(Runs=u’63’), Row(Runs=u’40’), Row(Runs=u’8′)]

Aggregate mean, max, min – Python

In [32]:
#tendulkar[['Mins','BF','Runs']].groupby('Runs').mean()
# Remove rows which have DNB
import pandas as pd
import os
os.getcwd()
tendulkar = pd.read_csv("/dbfs/FileStore/tables/tendulkar.csv", header='infer')
tendulkar.shape
a=tendulkar.Runs !="DNB"
tendulkar=tendulkar[a]
tendulkar.shape

# Remove rows which have TDNB
b=tendulkar.Runs !="TDNB"
tendulkar=tendulkar[b]
tendulkar.shape

# Remove the '*' character
c= tendulkar.BF != "-"
tendulkar=tendulkar[c]
tendulkar.Runs= tendulkar.Runs.str.replace(r"[*]","")

#tendulkar.shape
type(tendulkar['Runs'][0])
tendulkar['Runs']=pd.to_numeric(tendulkar['Runs'])
tendulkar['BF']=pd.to_numeric(tendulkar['BF'])
df=tendulkar[['Runs','BF','Ground']].groupby('Ground').agg(['mean','min','max'])
df.head(10)
Out[34]: Runs BF mean min max mean min max Ground Adelaide 32.600000 0 153 58.400000 5 205 Ahmedabad 40.125000 4 217 80.062500 3 344 Auckland 5.000000 5 5 13.000000 13 13 Bangalore 54.312500 0 214 98.687500 0 363 Birmingham 46.750000 1 122 71.500000 8 177 Bloemfontein 85.000000 15 155 109.500000 35 184 Bridgetown 26.000000 0 92 45.000000 2 147 Brisbane 7.666667 0 16 23.333333 3 42 Bulawayo 55.000000 36 74 88.500000 49 128 Cape Town 69.857143 9 169 155.285714 28 314

Aggregate mean,min max – Pyspark

In [34]:
from pyspark.sql.functions import *
tendulkar1= (sqlContext
         .read.format("com.databricks.spark.csv")
         .options(delimiter=',', header='true', inferschema='true')
         .load("/FileStore/tables/tendulkar.csv"))
tendulkar1= tendulkar1.where(tendulkar1['Runs'] != 'DNB')

print(dfShape(tendulkar1))
tendulkar1= tendulkar1.where(tendulkar1['Runs'] != 'TDNB')
print(dfShape(tendulkar1))
tendulkar1 = tendulkar1.withColumn('Runs', regexp_replace('Runs', '[*]', ''))
tendulkar1.select('Runs').rdd.distinct().collect()

from pyspark.sql import functions as F
df=tendulkar1[['Runs','BF','Ground']].groupby(tendulkar1['Ground']).agg(F.mean(tendulkar1['Runs']),F.min(tendulkar1['Runs']),F.max(tendulkar1['Runs']))
df.show()
(330, 12) (329, 12) +————-+—————–+———+———+ Ground| avg(Runs)|min(Runs)|max(Runs)| +————-+—————–+———+———+ Bangalore| 54.3125| 0| 96| Adelaide| 32.6| 0| 61| Colombo (PSS)| 37.2| 14| 71| Christchurch| 12.0| 0| 24| Auckland| 5.0| 5| 5| Chennai| 60.625| 0| 81| Centurion| 73.5| 111| 36| Brisbane|7.666666666666667| 0| 7| Birmingham| 46.75| 1| 40| Ahmedabad| 40.125| 100| 8| Colombo (RPS)| 143.0| 143| 143| Chittagong| 57.8| 101| 36| Cape Town|69.85714285714286| 14| 9| Bridgetown| 26.0| 0| 92| Bulawayo| 55.0| 36| 74| Delhi|39.94736842105263| 0| 76| Chandigarh| 11.0| 11| 11| Bloemfontein| 85.0| 15| 155| Colombo (SSC)|77.55555555555556| 104| 8| Cuttack| 2.0| 2| 2| +————-+—————–+———+———+ only showing top 20 rows

How are you doing in life?

untitled

Re-interpreting the Bhagavad Gita

The Bhagavad Gita is an ancient Hindu text, supposed to have been written more than 5000 years ago.  According to Hindu mythology, Krishna recited the verses in the Gita to Arjuna, in the battlefield during the Mahabharata war. However, it is said that many of the sayings in the Gita can probably be traced to earlier Upanishads.

The Gita includes some pretty heady philosophy of the Personal Self (Atman) and the Supreme Consciousness (Brahman). Some of these parts may or may not be relevant in today’s context and body of knowledge.  This post will skirt around such philosophical questions and look on some of the more practical sayings of the Gita.

I would like to give a different slant to some of the sayings from the Gita as opposed to the accepted interpretation. This could be a case of the ‘devil citing the Scriptures for his own purpose’. In any case you decide

Here goes

Gita: You have a right to perform your prescribed duty, but you are not entitled to the fruits of action

The above saying requires us to do our prescribed work without giving thought to the results of the work. However most of us do something, in anticipation of success or a reward of some kind. To a large extent, it is this success/reward, which motivates us to do better. But it appears that the Gita wants us to ignore the reward, but just mindlessly carry on with our work, with total disregard for the outcome.

In my opinion this is not so. If people are not driven by the thought of success, people will  simply do things mechanically. I think is important that we always do, what we need to do, to the best of our abilities. While we can be mindful of the taste of success, we should not be so carried away by success that we under-perform. Also on the other hand after having tasted success we should neither become giddy-headed with success nor be broken hearted by failure. We need to be able to face both success and failure with equanimity. So in essence, while we can be driven by success, to perform better, we should not let this come in the way of our performance as either anxiety or over-confidence.

‘Nishkama karma’

The Gita enjoins us to perform ‘nishkama karma’ or desireless -action. In fact the Gita goes on to say that ‘desire leads to anger, anger leads delusion, from delusion loss of memory and finally loss of spiritual intelligence’. In other words desire is the root of all evil.

This is again a very sticky point. For this we need to understand what desire really is and when it is bad?  Some people take the route that all desire is bad. They carry it to the extreme where and claim that one has to be content with whatever life throws one’s way.

My interpretation is that there is a fine line between desire and ambition. To me, it absolutely fine, if you want to become a millionaire, get the snazziest car or desire for a really great house as long as you work  honestly towards acquiring it. Desire is only bad when we try to acquire the object of desire through illegal, wrongful methods. However as the Gita says we should not get attached to these worldly belongings.

So after you become a millionaire, if you start getting attached to the millionaire lifestyle then you are in for some deep trouble. So go after what you want, but do not become dependent on these worldly acquisitions. Do not be under the impression, that Gita forbids ambition of any sort.

A true yogi treats success and failure, praise and criticism, good and bad alike.

This saying has the danger of being mis-interpreted that we should neither react to success or failure nor to good or bad things that happen to us in our life. In reality what we need to do, is not get proud because of success, nor be dejected because of failure. If we face problems in our lives we should not face them stoically all the while imagining ourselves to be a true yogi or the ‘biblical Job’. Rather we have to stand up to our problems and take positive action.

So those are my interpretation of some of the more common sayings in the Bhagavad Gita.

This fleeting life…

If you wonder about the transience of butterflies, whose average life span is about month, here is news for you. Our life span of 70-80 years, is also fleeting and transitory, in the face of the age of the universe. We are were now, gone then!

We live only once in this corporeal body in this planet earth. We are then gone forever.

Under these circumstances it is important to be aware of the following
There is no heaven or hell, no swarga or naraga. There is no afterlife, there is no rebirth. Also there is neither a soul nor is there an atman.

This life, this existence, is all that we have.
Given this fleeting existence, in this lonely planet, that is lost in the wilderness of space, does it make sense to fret, fume, worry, be anxious etc.? It really does not make any sense at all. The suffering, pain, anxieties, worries don’t mean anything in the long run. So the next question is why worry, why be anxious etc.?

Unfortunately it is not easy to break out of this cycle of worry, anxiety, anger and other negative emotions as we have been programmed to behave in this way. These emotions that we experience are the result of centuries of conditioning in our mental makeup. This conditioning forces to react in a particular ways.

When somebody hurts our ego we get angry. When we are humiliated we feel hurt. When we imagine some outcome that is contrary to what we expect, we start to be anxious and begin to worry. We can’t get away from this cycle. However it is good to temper all your reactions with the thought, that your emotions, worries and anger are irrelevant in the larger scheme of things. It may not do away with the ill feeling, but it is still worth a try.

The centuries of mental conditioning will cause the neurons to fire is specific ways, and we can’t make the neurons to ‘unfire’. We can’t swim against this tide of emotions which are reactions to events.

While there is no soul or atman, these may be useful mental constructs to some in  helping them to stick to values.  The soul is supposed to be ennobled by good deeds and defiled by bad ones. The atma is above buddhi(intellect), manas (mind) and the indriyas( senses and is synonymous with the Self. Supposedly knowledge of the Self will result in bliss and peace.

But the soul or atman don’t really exist. If one needs to take recourse to these concepts to maintain a value driven life it is fine. But we should be aware that these are just concepts.

I was reminded of this John Lennon song, Imagine
Imagine there is no heaven,
It is easy if you try
No hell below us
Above us, only sky

So in essence, in this short span of existence we should live sensibly. We need to look at life in the correct perspective and not get embroiled in imaginary concepts like swarg-narag, heaven-hall, soul-atman.

While we cannot avoid some of the emotions we must be cognizant of the fact that all good and bad experiences must pass and we will leave this corporeal frame forever.

Choice

1In this sea of existence
Our life is like a drop of falling water.
We can either merge quietly with the sea,
Or make a local, transient splash …
As humans, the choice is ours.

T V Ganesh, 6 Jul 2015

Moving ahead in life

Our life in this lonely planet may be short (~70 years) in comparison to the life of the universe (13.6 billion years). Yet we need to move ahead in this earthly stint of ours. Here are some general tips to move ahead in life.

Become aware of who you are: If you want to move ahead in life the first step that you need to take is to know yourself. You need to understand who you are, where you are in life and where you want to go. Without complete awareness of oneself it is futile to pursue any action for progress.

Introspect and identify your strengths and weaknesses.  We can only understand ourselves, if we inquire into our very own nature. We need to fully understand where we are currently in life versus where we would like to reach in life. This help us know the areas we need to focus on and the areas we need to improve upon.

Talent:  To move ahead we need an adequate amount of talent.  Talent in people occurs in varying degrees. But it is up to each individual to improve on his talent. Even mediocre people can improve their skill and talent in any field they choose, as long as there is ‘deliberate, focused’ practice. While some people are born with talent there are many who acquire the necessary talent through years of perseverance, enthusiasm and dedication. So lack of talent can never be an excuse for not getting to where you want in life. Finally it is attitude, persistence and practice that makes one an expert with all the necessary talent.

Hard work: Perseverance and persistence are the pillars of success in life. One cannot state the importance of this enough. Behind the fame and success of reputed people are years and years of hard work, unswerving dedication and tenacity to not let go. Even successful musicians, sportsmen, scientist have to keep constantly honing their skills to move ahead in their field. Remember the world is full of talented people and there is a constant necessity to push ahead in life besides improving on your skill.

Street Smarts: This skill in a person is often ignored as against other qualities like persistence, talent and hard work.  But in the long run street smarts or ‘savvy’ is clearly what distinguishes winners from the also-rans.  Savvy is knowing which option amongst the many are the one that count. Smarts is being able to strategize and make appropriate plans for success.  Street Smarts in reality, is making the most of the talent and skill that one already has against the competition.  It is knowing the difference on when to strike and when to stay put.

Street smarts requires dollops of common sense. There are many situations where a smarter player is victorious over a more talented player simply because of his cleverness in applying what he knows.  Life is a game where you skill counts as much as your ability to outwit odds stacked against you.

Hence to move ahead in life we need all the work – Self-awareness, talent, hard-work and finally street-smarts.