pyreadstat 1.2.8__tar.gz → 1.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyreadstat might be problematic. Click here for more details.

Files changed (98) hide show
  1. {pyreadstat-1.2.8/pyreadstat.egg-info → pyreadstat-1.2.9}/PKG-INFO +1 -1
  2. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/README.md +12 -6
  3. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/__init__.py +1 -1
  4. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_parser.c +1127 -998
  5. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_parser.pxd +1 -1
  6. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_parser.pyx +12 -2
  7. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_writer.c +3425 -2668
  8. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_writer.pxd +2 -1
  9. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/_readstat_writer.pyx +62 -11
  10. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/pyreadstat.c +1298 -1189
  11. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/pyreadstat.pyx +22 -11
  12. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/readstat_api.pxd +7 -2
  13. {pyreadstat-1.2.8 → pyreadstat-1.2.9/pyreadstat.egg-info}/PKG-INFO +1 -1
  14. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/setup.py +1 -1
  15. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport_write.c +9 -5
  16. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/tests/test_basic.py +10 -0
  17. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/LICENSE +0 -0
  18. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/MANIFEST.in +0 -0
  19. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyproject.toml +0 -0
  20. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/conditional_includes.h +0 -0
  21. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/pyfunctions.py +0 -0
  22. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/pyreadstat.pxd +0 -0
  23. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat/worker.py +0 -0
  24. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat.egg-info/SOURCES.txt +0 -0
  25. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat.egg-info/dependency_links.txt +0 -0
  26. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat.egg-info/requires.txt +0 -0
  27. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/pyreadstat.egg-info/top_level.txt +0 -0
  28. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/setup.cfg +0 -0
  29. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/CKHashTable.c +0 -0
  30. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/CKHashTable.h +0 -0
  31. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat.h +0 -0
  32. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_bits.c +0 -0
  33. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_bits.h +0 -0
  34. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_convert.c +0 -0
  35. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_convert.h +0 -0
  36. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_error.c +0 -0
  37. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_iconv.h +0 -0
  38. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_io_unistd.c +0 -0
  39. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_io_unistd.h +0 -0
  40. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_malloc.c +0 -0
  41. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_malloc.h +0 -0
  42. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_metadata.c +0 -0
  43. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_parser.c +0 -0
  44. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_strings.h +0 -0
  45. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_value.c +0 -0
  46. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_variable.c +0 -0
  47. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_writer.c +0 -0
  48. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/readstat_writer.h +0 -0
  49. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/ieee.c +0 -0
  50. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/ieee.h +0 -0
  51. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas.c +0 -0
  52. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas.h +0 -0
  53. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas7bcat_read.c +0 -0
  54. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas7bcat_write.c +0 -0
  55. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas7bdat_read.c +0 -0
  56. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas7bdat_write.c +0 -0
  57. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas_rle.c +0 -0
  58. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_sas_rle.h +0 -0
  59. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport.c +0 -0
  60. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport.h +0 -0
  61. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport_parse_format.c +0 -0
  62. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport_parse_format.h +0 -0
  63. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/sas/readstat_xport_read.c +0 -0
  64. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por.c +0 -0
  65. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por.h +0 -0
  66. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por_parse.c +0 -0
  67. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por_parse.h +0 -0
  68. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por_read.c +0 -0
  69. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_por_write.c +0 -0
  70. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav.c +0 -0
  71. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav.h +0 -0
  72. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_compress.c +0 -0
  73. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_compress.h +0 -0
  74. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse.c +0 -0
  75. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse.h +0 -0
  76. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse_mr_name.c +0 -0
  77. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse_mr_name.h +0 -0
  78. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse_timestamp.c +0 -0
  79. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_parse_timestamp.h +0 -0
  80. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_read.c +0 -0
  81. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_sav_write.c +0 -0
  82. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_spss.c +0 -0
  83. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_spss.h +0 -0
  84. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_spss_parse.c +0 -0
  85. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_spss_parse.h +0 -0
  86. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_compress.c +0 -0
  87. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_compress.h +0 -0
  88. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_read.c +0 -0
  89. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_read.h +0 -0
  90. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_write.c +0 -0
  91. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/spss/readstat_zsav_write.h +0 -0
  92. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta.c +0 -0
  93. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta.h +0 -0
  94. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta_parse_timestamp.c +0 -0
  95. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta_parse_timestamp.h +0 -0
  96. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta_read.c +0 -0
  97. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/src/stata/readstat_dta_write.c +0 -0
  98. {pyreadstat-1.2.8 → pyreadstat-1.2.9}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyreadstat
3
- Version: 1.2.8
3
+ Version: 1.2.9
4
4
  Summary: Reads and Writes SAS, SPSS and Stata files into/from pandas data frames.
5
5
  Home-page: https://github.com/Roche/pyreadstat
6
6
  Download-URL: https://github.com/Roche/pyreadstat/dist
@@ -333,7 +333,8 @@ df, meta = pyreadstat.read_sas7bdat('/path/to/a/file.sas7bdat', usecols=["variab
333
333
  A challenge when reading large files is the time consumed in the operation. In order to alleviate this
334
334
  pyreadstat provides a function "read\_file\_multiprocessing" to read a file in parallel processes using
335
335
  the python multiprocessing library. As it reads the whole file in one go you need to have enough RAM for the operation. If
336
- that is not the case look at Reading rows in chunks (next section)
336
+ that is not the case look at Reading rows in chunks (next section). Notice however that you can combine reading in parallel
337
+ with reading in chunks as described in the next section.
337
338
 
338
339
  Speed ups in the process will depend on a number of factors such as number of processes available, RAM,
339
340
  content of the file etc.
@@ -598,11 +599,17 @@ translated as NaN by default and to the correspoding string value if
598
599
  user_missing is set to True. meta.missing_ranges will show the string
599
600
  value as well.
600
601
 
601
- If the value in
602
+ When writing a pandas dataframe to a sav file, if user defined missing values are not set, NaNs are translated to
603
+ empty strings, as there is no other possibility to represent those missing values and user defined missing values
604
+ are not set automatically.
605
+
606
+ When reading a sav into a pandas dataframe, if the value in
602
607
  a character variable is an empty string (''), it will not be translated to NaN, but will stay as an empty string. This
603
- is because the empty string is a valid character value in SPSS and pyreadstat preserves that property. You can convert
608
+ is because the empty string is a valid character value in SPSS and pyreadstat preserves that property.
609
+
610
+ This behaviour generates an asymetrical situation that has to be managed by the user. You can convert
604
611
  empty strings to nan very easily with pandas if you think it is appropiate
605
- for your dataset.
612
+ for your dataset, or you can use defined missing values as described before.
606
613
 
607
614
 
608
615
  ##### SAS and STATA
@@ -641,7 +648,6 @@ df, meta = pyreadstat.read_dta("/path/to/file.dta", user_missing=True, apply_val
641
648
 
642
649
  Empty strings are still transtaled as empty strings and not as NaN.
643
650
 
644
-
645
651
  The information about what values are user missing is stored in the meta object, in the variable missing_user_values.
646
652
  This is a list listing all user defined missing values.
647
653
 
@@ -798,7 +804,7 @@ pyreadstat.write_sav(df, path, variable_format=formats)
798
804
  ```
799
805
 
800
806
  The appropiate formats to use are beyond the scope of this documentation. Probably you want to read a file
801
- produced in the original application and use meta.original_value_formats to get the formats. Otherwise look
807
+ produced in the original application and use meta.original_variable\_types to get the formats. Otherwise look
802
808
  for the documentation of the original application.
803
809
 
804
810
  ##### SPSS
@@ -22,5 +22,5 @@ from .pyreadstat import read_file_in_chunks, read_file_multiprocessing
22
22
  from ._readstat_parser import ReadstatError, metadata_container
23
23
  from .pyfunctions import set_value_labels, set_catalog_to_sas
24
24
 
25
- __version__ = "1.2.8"
25
+ __version__ = "1.2.9"
26
26