Dou*_*Fir 5 python dataframe pandas
在这篇SO 文章中,有人建议使用 df.info() 来获取有关 aa pandas df 的信息,包括每个字段的数据类型。
在此粘贴此人的部分答案:
train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
Run Code Online (Sandbox Code Playgroud)
我在我自己的 pandas 数据框中尝试了这个:
sessions1DF.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 69085 entries, 0 to 69084
Data columns (total 10 columns):
ga:date 69085 non-null object
ga:hour 69085 non-null object
ga:dimension1 69085 non-null object
ga:dimension2 69085 non-null object
ga:userType 69085 non-null object
ga:landingpagePath 69085 non-null object
ga:deviceCategory 69085 non-null object
ga:sessions 69085 non-null object
ga:goal1Completions 69085 non-null object
ga:bounces 69085 non-null object
dtypes: object(10)
memory usage: 5.3+ MB
Run Code Online (Sandbox Code Playgroud)
一切都是一个对象,我期望它是字符串和数字的某种组合。这是头部:
sessions1DF.head()
Out[13]:
ga:date ga:hour ... ga:goal1Completions ga:bounces
0 20180605 18 ... 0 0
1 20180605 18 ... 0 1
2 20180605 18 ... 0 0
3 20180605 18 ... 0 1
4 20180605 18 ... 0 0
[5 rows x 10 columns]
Run Code Online (Sandbox Code Playgroud)
(我希望我知道如何强迫 pandashead()向我展示所有功能,而不仅仅是上面向我展示的 4 个功能)。
session1DF 实际上有一个名为“dimension1”的字段,它应该是一个字符串,我想将它与另一个数据框session2DF 连接起来,它们共享相同的字段“dimension1”。所以我想加入他们的一维。
我的 pandas 数据框有“问题”吗?有没有办法“提取”所有对象作为其中的实际数据?据推测,我的数据帧不是正常格式,其中每个字段只是一个数据向量。
有没有一种方法可以改变我的数据框,这样如果我输入,sessions1DF.info()我将得到类似于粘贴在顶部的结果,每列都是字符串、整数等而不是对象?
样本:
df = pd.DataFrame({'strings':['a','d','f'],
'dicts':[{'a':4}, {'c':8}, {'e':9}],
'lists':[[4,8],[7,8],[3]],
'tuples':[(4,8),(7,8),(3,)],
'sets':[set([1,8]), set([7,3]), set([0,1])] })
print (df)
dicts lists sets strings tuples
0 {'a': 4} [4, 8] {8, 1} a (4, 8)
1 {'c': 8} [7, 8] {3, 7} d (7, 8)
2 {'e': 9} [3] {0, 1} f (3,)
Run Code Online (Sandbox Code Playgroud)
所有值都相同dtypes:
print (df.dtypes)
dicts object
lists object
sets object
strings object
tuples object
dtype: object
Run Code Online (Sandbox Code Playgroud)
但type不同的是,如果需要通过循环检查它:
for col in df:
print (df[col].apply(type))
0 <class 'dict'>
1 <class 'dict'>
2 <class 'dict'>
Name: dicts, dtype: object
0 <class 'list'>
1 <class 'list'>
2 <class 'list'>
Name: lists, dtype: object
0 <class 'set'>
1 <class 'set'>
2 <class 'set'>
Name: sets, dtype: object
0 <class 'str'>
1 <class 'str'>
2 <class 'str'>
Name: strings, dtype: object
0 <class 'tuple'>
1 <class 'tuple'>
2 <class 'tuple'>
Name: tuples, dtype: object
Run Code Online (Sandbox Code Playgroud)
或列的第一个值:
print (type(df['strings'].iat[0]))
<class 'str'>
print (type(df['dicts'].iat[0]))
<class 'dict'>
print (type(df['lists'].iat[0]))
<class 'list'>
print (type(df['tuples'].iat[0]))
<class 'tuple'>
print (type(df['sets'].iat[0]))
<class 'set'>
Run Code Online (Sandbox Code Playgroud)
或者通过applymap:
print (df.applymap(type))
strings dicts lists tuples \
0 <class 'str'> <class 'dict'> <class 'list'> <class 'tuple'>
1 <class 'str'> <class 'dict'> <class 'list'> <class 'tuple'>
2 <class 'str'> <class 'dict'> <class 'list'> <class 'tuple'>
sets
0 <class 'set'>
1 <class 'set'>
2 <class 'set'>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8021 次 |
| 最近记录: |