Skip to content

enh: api cleanup... tostring, to_string, to_html, etc. #577

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
gregglind opened this issue Jan 5, 2012 · 11 comments
Closed

enh: api cleanup... tostring, to_string, to_html, etc. #577

gregglind opened this issue Jan 5, 2012 · 11 comments
Labels
API Design Internals Related to non-user accessible pandas implementation

Comments

@gregglind
Copy link
Contributor

There is a lot of semi-duplication / differences in the Series() and DataFrame() methods.

Maybe it's worth taking a look through them and regularising.

Fwiw, I prefer tostring vs. to_string

Also, would be nice to have tohtml on things, though expanding it is beyond the scope of this.

@wesm
Copy link
Member

wesm commented Jan 11, 2012

It might be a bit too late to remove underscores from a host of methods. I find the underscores easier on the eyes, though. For example:

frame.to_panel()

looks much better to me than

frame.topanel()

but that may be largely a function of having used that convention for a long time.

I agree that the API should be made uniform and consistent across the data structures. Feel free to hack away-- I'm not going to be able to invest much in this relative to the feature queue for a while

@lodagro
Copy link
Contributor

lodagro commented Feb 14, 2012

As reference, with a little bit of pandas code i created an overview of available methods (0.8.0.dev-de6318e).
Unfortunately github does not render colors, True/False are in Green/Red divs.
True : method available
False : method not available

series dataframe panel
T
True
True
False
abs
True
True
True
add
True
True
True
add_prefix
False
True
True
add_suffix
False
True
True
align
True
True
False
all
True
False
False
any
True
False
False
append
True
True
False
apply
True
True
True
applymap
False
True
False
argmax
True
False
False
argmin
True
False
False
argsort
True
False
False
as_matrix
False
True
False
asfreq
True
True
False
asof
True
False
False
astype
True
True
True
autocorr
True
False
False
axes
False
True
True
base
True
False
False
boxplot
False
True
False
byteswap
True
False
False
choose
True
False
False
clip
True
True
False
clip_lower
True
True
False
clip_upper
True
True
False
columns
False
True
False
combine
True
True
False
combineAdd
False
True
False
combineMult
False
True
False
combine_first
True
True
False
compound
False
False
True
compress
True
False
False
conform
False
False
True
conj
True
False
False
conjugate
True
False
False
consolidate
False
True
True
convert_objects
False
True
False
copy
True
True
True
corr
True
True
False
corrwith
False
True
False
count
True
True
True
cov
True
True
False
ctypes
True
False
False
cummax
True
True
True
cummin
True
True
True
cumprod
True
True
True
cumsum
True
True
True
data
True
False
False
delevel
False
True
False
describe
True
True
False
diagonal
True
False
False
diff
True
True
False
div
True
True
True
divide
False
False
True
dot
True
True
False
drop
True
True
True
drop_duplicates
False
True
False
dropna
True
True
False
dtype
True
False
False
dtypes
False
True
False
dump
True
False
False
dumps
True
False
False
duplicated
False
True
False
fill
True
False
False
fillna
True
True
True
filter
False
True
True
first_valid_index
True
True
False
flags
True
False
False
flat
True
False
False
flatten
True
False
False
fromDict
False
False
True
from_csv
True
True
False
from_dict
False
True
True
from_items
False
True
False
from_records
False
True
False
get
True
True
True
get_dtype_counts
False
True
False
get_value
True
True
True
getfield
True
False
False
groupby
True
True
True
head
True
True
False
hist
True
True
False
icol
False
True
False
idxmax
True
True
False
idxmin
True
True
False
iget
True
False
False
iget_value
True
True
False
imag
True
False
False
index
True
True
False
info
False
True
False
insert
False
True
False
interpolate
True
False
False
irow
False
True
False
isin
True
False
False
isnull
True
False
False
item
True
False
False
items
False
False
True
itemset
True
False
False
itemsize
True
False
False
iteritems
True
True
True
iterkv
True
True
True
iterrows
False
True
False
ix
True
True
True
join
False
True
True
keys
True
False
True
last_valid_index
True
True
False
load
True
True
True
lookup
False
True
False
mad
True
True
False
major_axis
False
False
True
major_xs
False
False
True
map
True
False
False
max
True
True
True
mean
True
True
True
median
True
True
True
merge
False
True
False
min
True
True
True
minor_axis
False
False
True
minor_xs
False
False
True
mul
True
True
True
multiply
False
False
True
name
True
False
False
nbytes
True
False
False
ndim
True
True
True
newbyteorder
True
False
False
nonzero
True
False
False
notnull
True
False
False
nunique
True
False
False
order
True
False
False
pivot
False
True
False
pivot_table
False
True
False
plot
True
True
False
pop
False
True
True
prod
True
True
True
product
False
True
False
ptp
True
False
False
put
True
False
False
quantile
True
True
False
radd
False
True
False
rank
True
True
False
ravel
True
False
False
rdiv
False
True
False
real
True
False
False
reindex
True
True
True
reindex_axis
False
True
False
reindex_like
True
True
True
rename
True
True
False
rename_axis
False
True
True
reorder_levels
True
True
False
repeat
True
False
False
reset_index
True
True
False
reshape
True
False
False
resize
True
False
False
rmul
False
True
False
round
True
False
False
rsub
False
True
False
s
False
True
False
save
True
True
True
searchsorted
True
False
False
select
True
True
True
set_index
False
True
False
set_value
True
True
True
setasflat
True
False
False
setfield
True
False
False
setflags
True
False
False
shape
True
True
True
shift
True
True
True
size
True
False
False
skew
True
True
True
sort
True
True
False
sort_index
True
True
True
sortlevel
True
True
False
squeeze
True
False
False
stack
False
True
False
std
True
True
True
strides
True
False
False
sub
True
True
True
subtract
False
False
True
sum
True
True
True
swapaxes
True
False
True
swaplevel
True
True
True
tail
True
True
False
take
True
True
True
toLong
False
False
True
to_csv
True
True
False
to_dict
True
True
False
to_excel
False
True
True
to_frame
False
False
True
to_html
False
True
False
to_long
False
False
True
to_panel
False
True
False
to_records
False
True
False
to_sparse
True
True
True
to_string
True
True
False
to_wide
False
True
False
tofile
True
False
False
tolist
True
False
False
tostring
True
False
False
trace
True
False
False
transpose
True
True
False
truncate
True
True
True
unique
True
False
False
unstack
True
True
False
valid
True
False
False
value_counts
True
False
False
values
True
True
True
var
True
True
True
view
True
False
False
weekday
True
False
False
xs
False
True
True

@adamklein
Copy link
Contributor

Very useful and interesting!

@jreback
Copy link
Contributor

jreback commented Sep 20, 2013

@lodagro can you update this? would be interesting now that objects are combined

@lodagro
Copy link
Contributor

lodagro commented Sep 24, 2013

Update? Do you mean regenerate the above table for master?

@jreback
Copy link
Contributor

jreback commented Sep 24, 2013

yep...that's what I meant

@cpcloud
Copy link
Member

cpcloud commented Sep 24, 2013

@lodagro can u also put the code u used to create it in a gist? we could make it into a script ...

@lodagro
Copy link
Contributor

lodagro commented Sep 24, 2013

Could not find back the code i used to generate the above table, i probably did it interactively using IPython.

Its not much really, on request i made a gist. The output is a html file.
Note that you can use a predicate when doing inspect.getmembers to do some filtering.

@jreback jreback modified the milestones: 0.15.0, 0.14.0 Mar 11, 2014
@naught101
Copy link

Dunno whether it's worth opening a new issue, but df.as_matrix should be renamed to df.as_array - it returns a numpy.ndarray, not a numpy.matrixlib.defmatrix.matrix. And in the case of Series, Panels and Panel4Ds it returns 1D, 3D and 4D arrays respectively, which clearly aren't matrices.

I would suggest that it might be worth adopting a convention like df.as_* for conversion to other data types (df.as_matrix, df.as_dict, df.as_list, etc), and df.to_* for export to files or other streams (df.to_clipboard, df.to_csv, df.to_html, etc).

@naught101
Copy link

Also, I agree that underscores are better - what the hell is a tost ring? Not to mention "asof" (wtf?), and "top anel" :P

camelCase would also be ok, it's much clearer than no word definition, and it's shorter than underscores.

Re: "a bit too late". Wouldn't it be easy enough to just make aliases for each method, and raise warnings when they're called, noting that they're deprecated? Those aliases could be removed later (and the warnings could state which version they will be removed in).

@wesm
Copy link
Member

wesm commented Sep 29, 2016

Closing -- please open issues addressing specific existing inconsistencies.

@wesm wesm closed this as completed Sep 29, 2016
@jorisvandenbossche jorisvandenbossche modified the milestones: Next Major Release, No action Sep 30, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API Design Internals Related to non-user accessible pandas implementation
Projects
None yet
Development

No branches or pull requests

8 participants