pandas学习

.Seris是一个一维数组对象,可以有不同的数组类型,与numpy的一维array不同的是除了包含一组数据还包含一组索引。

import numpy as np
import pandas as pd
a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
print(a)
print(b)


输出:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
dtype: int32
0      6
1     dd
2      9
3    ffc
dtype: object

可以看到,返回了数据类型:object(对象)

可以指定索引的数据类型,如可以指定索引为大写字母,index为内置属性

import numpy as np
import pandas as pd
import string
a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
c = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
#print(a)
#print(b)
print(c)


输出:
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int32

Process finished with exit code 0

通过字典推导式生成字典,再用Series生成数组,注意字典的键就是索引,且Series()函数没有返回值,原地操作字典,需要重新赋值给其他变量,如下所示

a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
c = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
d = {string.ascii_uppercase[i]:i for i in range(10)}#字典推导式生成字典
pd.Series(d)
#e = pd.Series(d)

#print(a)
#print(b)
#print(c)
print(d)

输出:
{'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}
import numpy as np
import pandas as pd
import string
a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
c = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
d = {string.ascii_uppercase[i]:i for i in range(10)}#字典推导式生成字典
#pd.Series(d)
e = pd.Series(d)

#print(a)
#print(b)
#print(c)
#print(d)
print(e)

输出:
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int64

若重新指定索引

import numpy as np
import pandas as pd
import string
a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
c = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
d = {string.ascii_uppercase[i]:i for i in range(10)}#字典推导式生成字典
#pd.Series(d)
#e = pd.Series(d)
f = pd.Series(d,index=list(string.ascii_uppercase[5:15]))

输出:
F    5.0
G    6.0
H    7.0
I    8.0
J    9.0
K    NaN
L    NaN
M    NaN
N    NaN
O    NaN
dtype: float64

出现了nan值,且数据类型变为字符型。因为若重新指定其他索引,能够对应上原来的值则取其值,对应不上则为nan,可以看到F之前的值都没了,J之后为nan,类型变为float是因为nan,在numpy中nan为float,pandas会根据数据类型改成统一的数据类型。修改dtype和numpy一样,调用内置属性astype()即可,f.astype(int).切片和索引则和numpy一样,切片:传入参数(start:end:stride),索引则是传入序号。

2.访问Serise索引和值

import numpy as np
import pandas as pd
import string
a = pd.Series(np.arange(1,10))
b = pd.Series([6,"dd",9,"ffc"])
c = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(c.index)
print(c.values)
print(type(c.index))

输出:
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], dtype='object')
[0 1 2 3 4 5 6 7 8 9]
<class 'pandas.core.indexes.base.Index'>

c.index,内置属性,无需传参,打印即可。

3.pd.read_csv("./dogNames2.csv",header=None)读取csv文件

4.读取mongodb数据库,还不懂咋用,先做个记录

5.pandas的DataFrame

Series是一维带索引的数组,而DataFrame则是二维,Series的容器,帧,有宽和高,顾名思义,i名字起得不错

#coding = uft-8
import numpy as np
import pandas as pd
a = pd.DataFrame(np.arange(12).reshape(3,4))
print(type(a))
print(a)

输出:
<class 'pandas.core.frame.DataFrame'>
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

可以看到,我们规定了形状(3,4)之后,DataFrame对象既有行索引,又有列的索引

行索引,表明不同行,横向索引,叫index,0轴,axis=0;列索引,表明不同列,纵向索引,叫columns,1轴,axis=1。个人认为axis这个参数很重要,以后肯定还会遇到,axis=0表示行,axis=1表示列。

6.pandas还有很多操作,获取行列数据,索引,改变某一个值,与numpy一样,只是封装的函数不同,后面回来更。

7.split()函数:拆分字符串,通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

8.set,python里的组合,不允许重复,且set里的内容位置是随意的,所以不能用索引列出。可进行关系测试,删除重复数据。

#coding=utf-8
import pandas as pd
import numpy as np

file_path = "IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
#pd.set_option('display.max_row', None)#显示全部行
#print(df.info()) #查看每个数据的数目
pd.set_option('display.max_columns', None)#显示全部列
print(df.head(1))
print(df["Rating"].mean())
#统计导演人数
#print(len(set(df["Director"].tolist()))) #set()函数,一个不允许重复的组合,用于关系测试,删除重复数据
print(len(df["Director"].unique()))#unique函数
#获取演员人数
temp_actors_list = df["Actors"].str.split(", ").tolist()
'''
#split,分割函数,以什么样的符号分割再返回列表,再set,删除
分割符应打印出来再复制进去,不能凭主观意志
重复的,tolist是转换成列表

#此处操作会生成二维列表,即嵌套列表[[]],所以下面是两个for循环
'''
print(temp_actors_list)
actors_list = [i for j in temp_actors_list for i in j]
'''
因生成二维列表,所以两个for循环可以将其转换成一维列表
[[]]变成[],常规操作
'''
print(actors_list)
#np.array(temp_actors_list).flatten()
actors_num = len(set(actors_list))
print(actors_num)
#print(a_list)
#coding=utf-8,很重要,不然可能解码错误。

9.先空置,学到再继续记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值