Skip to content

DOC: Improved the docstring of pandas.DataFrame.values #20065

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

Merged
merged 9 commits into from
Mar 10, 2018
55 changes: 52 additions & 3 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -4232,7 +4232,50 @@ def as_matrix(self, columns=None):

@property
def values(self):
"""Numpy representation of NDFrame
"""
Return a Numpy representation of the DataFrame.

Only the values in the DataFrame will be returned, the axes labels
will be removed.

Returns
-------
numpy.ndarray
The values of the DataFrame

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think from_array could be a good option for a See Also section. If I'm not wrong it's kind of the inverse method.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went with from_records, thank you for suggesting to include the inverse in that section.

Examples
--------
A DataFrame where all columns are the same type (e.g., int64) results
in an ndarray of the same type.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use here 'array' instead of 'ndarray' (that looks a bit more user friendly, the full name is already in the Returns section


>>> df = pd.DataFrame({'age': [ 3, 29],
... 'height': [94, 170],
... 'weight': [31, 115]})
>>> df
age height weight
0 3 94 31
1 29 170 115
>>> df.values
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you show here df.dtypes as well? (like you did below, that will be useful to see they are all the same)

array([[ 3, 94, 31],
[ 29, 170, 115]], dtype=int64)

A DataFrame with mixed type columns(e.g., str/object, int64, float32)
results in an ndarray of the broadest type encompasing these mixed
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The note belows uses "accommodates" instead of "encompasing". Best to use the same terminolgy in both cases

types (e.g., object).

>>> df2 = pd.DataFrame([('parrot', 24.0, 'second'),
... ('lion', 80.5, 1),
... ('monkey', np.nan, None)],
... columns=('name', 'max_speed', 'rank'))
>>> df2.dtypes
name object
max_speed float64
rank object
dtype: object
>>> df2.values
array([['parrot', 24.0, 'second'],
['lion', 80.5, 1],
['monkey', nan, None]], dtype=object)

Notes
-----
Expand All @@ -4243,8 +4286,14 @@ def values(self):

e.g. If the dtypes are float16 and float32, dtype will be upcast to
float32. If dtypes are int32 and uint8, dtype will be upcast to
int32. By numpy.find_common_type convention, mixing int64 and uint64
will result in a flot64 dtype.
int32. By :func:`numpy.find_common_type` convention, mixing int64
and uint64 will result in a float64 dtype.

See Also
--------
pandas.DataFrame.from_records : Creating a DataFrame from an ndarray
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case from_records is specifically for a record array, while this attribute returns a normal array. So in this case I wouldn't mention this here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I included this as "inverse operation": DF <-> array

pandas.DataFrame.keys : Retrieving the 'info axis' (column names)
pandas.DataFrame.columns : Retrieving the column names
"""
self._consolidate_inplace()
return self._data.as_array(transpose=self._AXIS_REVERSED)
Expand Down