码迷,mamicode.com
首页 > 其他好文 > 详细

Series和DataFrame的基本概念

时间:2019-01-20 15:53:53      阅读:686      评论:0      收藏:0      [点我收藏+]

标签:highlight   python   iterable   random   items   字典   效率   rabl   item   

1,创建Series

1.1,通过iterable创建Series

Series接收参数是Iterable,不能是Iterator

pd.Series(Iterable)

可以多加一个index参数,index可以接收Iterator或者Iterable:

>>> pd.Series((‘a‘, ‘b‘), index=iter(range(2)))
0    a
1    b
dtype: object

 

1.2,通过字典创建Series

key是索引:

>>> pd.Series({‘a‘:1, ‘b‘:2})
a    1
b    2
dtype: int64

 

2,Series常用方法

s = pd.Series([1, 2, 3], index=list(‘abc‘))

Series也能像字典那样遍历:

for index, value in s.items():
    print(index, value, end=‘;‘)  # a 1;b 2;c 3;

和字典一样,Series的in测试默认是index操作,如果想对values操作需加上values:

print(‘a‘ in s)   # True
print(1 in s.values)  # True

获取series的values组成的列表:

print(s.tolist())   # [1, 2, 3]

  

3,创建DataFrame

3.1,通过iterable组成的列表创建DataFrame

[it1, it2, ..., itN],每个it是一行数据,缺省的index, columns是从0开始的int

>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), ‘abc‘])
   0  1  2
0  1  2  3
1  4  5  6
2  3  4  5
3  a  b  c

it长度不等时会自动用NaN或者None填充:

>>> pd.DataFrame([(1, 2), [4, 5], range(3, 6), ‘abc‘])
   0  1     2
0  1  2  None
1  4  5  None
2  3  4     5
3  a  b     c
>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), ‘ab‘])
   0  1    2
0  1  2  3.0
1  4  5  6.0
2  3  4  5.0
3  a  b  NaN

指定index和columns:

>>> pd.DataFrame([(1, 2, 3), [4, 5, 6], range(3, 6), ‘abc‘], index=range(4), columns=list(‘ABC‘))
   A  B  C
1  1  2  3
2  4  5  6
3  3  4  5
4  a  b  c

 

3.2,通过numpy矩阵创建DataFrame

np_data = np.random.random((3, 4))
np_data = np.arange(12).reshape(3, 4)
np_data = np.ones((3, 4))
df = pd.DataFrame(np_data)

 

3.3,通过“一键多值”创建DataFrame

创建dataframe,键是列名:

>>> pd.DataFrame({‘a‘:[1, 2, 3], ‘b‘: [4, 5, 6]})     
   a  b
0  1  4
1  2  5
2  3  6

可以设置index:

>>> pd.DataFrame({‘a‘:[1, 2, 3], ‘b‘: [4, 5, 6]}, index=list(‘456‘))
   a  b
4  1  4
5  2  5
6  3  6

创建df时更改columns会出问题:

>>> pd.DataFrame({‘a‘:[1, 2, 3], ‘b‘: [4, 5, 6]}, columns=list(‘AB‘))
Empty DataFrame
Columns: [A, B]
Index: []

这种创建方法可以看做是按列创建df,需要事先建很多列表,最后一次性赋给df

 

3.4,通过“字典列表”创建DataFrame

pd.DataFrame([{‘a‘:1 , ‘b‘: 4},  {‘a‘:2 , ‘b‘: 5},  {‘a‘:3 , ‘b‘: 6}]) 
   a  b
0  1  4
1  2  5
2  3  6

这种方法只需要创建一个列表,然后不停往该列表里添加字典即可,推荐!

 

3.5,df.loc,df.iloc,df.ix等逐行/逐单元格创建DataFrame

事先创建好dataframe,然后用dfdf.loc,df.iloc,df.ix逐行逐单元格增加数据,例如:

df = pd.DataFrame()
for index, item in enumerate(zip(‘abcde‘, range(5))):
    df.loc[index, ‘A‘] = item[0]
    df.loc[index, ‘B‘] = item[1]

效率非常低,不推荐

 

 

  

  

 

Series和DataFrame的基本概念

标签:highlight   python   iterable   random   items   字典   效率   rabl   item   

原文地址:https://www.cnblogs.com/guxh/p/10294889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!