Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. s = pd.Series([.4, .5, .6], list('abc'))
  2. s
  3.  
  4. a 0.4
  5. b 0.5
  6. c 0.6
  7. dtype: float64
  8.  
  9. pd.Series(np.ones_like(s.values), s.index, name=s.name)
  10.  
  11. a 1.0
  12. b 1.0
  13. c 1.0
  14. dtype: float64
  15.  
  16. np.random.seed(42)
  17. df = pd.DataFrame(np.random.randn(10**6,), columns=['A'])
  18. # Populate values with Nans
  19. df.loc[df.sample(frac=0.5).index] = np.NaN
  20.  
  21. df.shape
  22. # (1000000, 1)
  23.  
  24. def fill_ones_with_modify():
  25. ser = df['A'].copy(deep=False) # use copy() → without modifying the original DF
  26. ser.values.fill(1)
  27. return ser
  28.  
  29. %timeit fill_ones_with_modify()
  30. 1000 loops, best of 3: 837 µs per loop
  31.  
  32. def fill_ones_without_modify():
  33. ser = df[['A']].copy(deep=False).squeeze()
  34. ser.values.fill(1)
  35. return ser
  36.  
  37. %timeit fill_ones_without_modify()
  38. 100 loops, best of 3: 6.4 ms per loop
  39.  
  40. >>> a = pandas.Series(np.array([0,np.nan,2,3,4]), list('abcde'))
  41. >>> a
  42. a 0.0
  43. b NaN
  44. c 2.0
  45. d 3.0
  46. e 4.0
  47. dtype: float64
  48. >>> (a/a).fillna(1)
  49. a 1.0
  50. b 1.0
  51. c 1.0
  52. d 1.0
  53. e 1.0
  54. dtype: float64
  55.  
  56. pd.Series(1, s.index, name=s.name)
  57.  
  58. s = pd.Series(5, range(int(1e6)))
  59.  
  60. %timeit pd.Series(1, s.index, name=s.name)
  61. %timeit pd.Series(np.ones(s.shape), s.index, name=s.name)
  62. %timeit fill_ones_with_modify(s)
  63. %timeit s.div(s).fillna(1)
  64.  
  65. 413 µs ± 2.03 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  66. 375 µs ± 2.04 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  67. 369 µs ± 975 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  68. 3.47 ms ± 12.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement