1

I have written a function that does the job, however it looks particularly ugly. Would you give me some suggestion to make it more pythonic ? First of all I get some data from my database(via extractData). And then I have to do a check on every lenght after having calculating them.

Thus, I want to count every occurrences that last less than x days and plot it into matplotlib via bar.

Thanks for your help.

import numpy as np

listAct,less1,less2,less3,less4,less5,less6,less7,less8,less9=[],0,0,0,0,0,0,0,0,0
less10,less11,less12,less13,less14,sup14=0,0,0,0,0,0

for pos,rem in np.array(db.extractData(mess)):
    act = gen.unixTime_to_dateTime(rem)- gen.unixTime_to_dateTime(pos)
    lenAct = act.days  +act.seconds/float(86400)

    if lenAct < 1:
        less1+=1
    elif lenAct<2:
        less2+=1
    elif lenAct<3:
        less3+=1
    elif lenAct<4:
        less4+=1
    elif lenAct<5: 
        less5+=1
    elif lenAct<6:
        less6+=1
    elif lenAct<7:
        less7+=1
    elif lenAct<8:
        less8+=1
    elif lenAct<9:
        less9+=1 
    elif lenAct<10:
        less10+=1
    elif lenAct<11:
        less11+=1
    elif lenAct<12:
        less12+=1
    elif lenAct<13:
        less13+=1
    elif lenAct<14:
        less14+=1
    else:
        sup14+=1

    listAct.append(lenAct)    

study=[less1,less2,less3,less4,less5,less6,less7,less8,less9,less10,less11]
plt.bar(range(1,12),study)
plt.show()

1 Answer 1

1

Matplotlib does pretty much everything :

import matplotlib.pyplot as plt
import numpy as np

listAct = []
for pos,rem in np.array(db.extractData(mess)):
    act = gen.unixTime_to_dateTime(rem)- gen.unixTime_to_dateTime(pos) ##act is a datetime object
    listAct.append(act.days + act.seconds/float(86400)) 

bins = range(1,15)
plt.hist(listAct,bins)
plt.show()

I hope this will help someone.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.