<pandas>learning...

pandas

1.Series

Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间一一对应

(1)创建Series对象

#创建空Series
import pandas as pd
s=pd.Series()
print(s)       #>>> Series([], dtype: float64)

ndarray创建Series对象

import pandas as pd
import numpy as np
data=np.array(["a","b","c"])
s=pd.Series(data)
m = pd.Series(data,index=["s","ss","sss"])
#可以自定义index索引值
print(s)                 #>>> 0    a
                         #    1    b
                         #    2    c
                         #    dtype: object

dict创建Series对象

如果没有传入索引时会按照字典的键来构造索引;但是当传递了索引时需要将索引标签与字典中的值一一对应。当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。

data={"a":1,"b":2,"c":3}
s=pd.Series(data,index=["b","a","c"])
print(s)               #>>> b    2
                       #    a    1
                       #    c    3
                       #    dtype: int64

标量创建Series对象

如果 data 是标量值,则必须提供索引

s=pd.Series(3,index=[1,3,5])
print(5)                      #>>> 1    3
                              #    3    3
                              #    5    3
                              #    dtype: int64  

(2)访问数据

print(a[0])
print(a[:3])
print(a[-2:])    #获取后两位
print(a["m","n"])   #通过index获取多位

(3)Series属性

empty

#判断是否为空
print(s.empty)     #>>> False

ndim

#输出维数
print(s.ndim)

size

#输出长度大小
print(s.size)

values

#以数组形式返回Series中数据
print(s.values)

index

#查看 Series 中索引的取值范围
print(s.index)

(4)常用

head()

#返回前几行数据
print(s.head(3))

tail()

#返回后几行

isnull()

如果为值不存在或者缺失,则返回 True

print(pd.isnull(aaa))    #有空值则返回True
#>>> 0    False
#    1    False
#    2    False
#    3     True
#    dtype: bool

notnull()

如果为值不存在或者缺失,则返回 False

2.DataFrame

表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型…

DataFrame 的每一行数据都可以看成一个 Series 结构,DataFrame 为这些行中每个数据值增加了一个列标签(columns)

(1)创建DataFrame

#空DataFrame
import pandas as pd
pd.DataFrame()

列表创建

#单一列表
data=[1,2,3,4,5]
s=pd.DataFrame(data)
print(s)                  #>>>     0
                         #    0    1
                         #    1    2
                         #    2    3
                         #    3    4
                         #    4    5 
#嵌套列表
data=[["a",10],["b",23],["c",32]]
m=pd.DataFrame(data,columns=["name","age"])
print(m)                     #>>>     name    age
                             #     0  a       10
                             #     1  b       23
                             #     2  c       32
            

字典嵌套列表

import pandas as pd
data = {"name":["Tom", "Jack", "Steve", "Ricky"],"age":[28,34,29,42]}
df = pd.DataFrame(data)
print(df)
#>>>       age      name
#     0     28        Tom
#     1     34       Jack
#     2     29      Steve
#     3     42      Ricky

key作为columns,value是这一列

已有columns,不可再定义;但是可以定义index (注意数量上对应)

df=pd.DataFrame(data,index=["first","second","third"])
#>>>       name  age
#  first     a   11
#  second    b   22
#  third     c   33

列表嵌套字典

data=[{"one":"lim","two":"dsm"},{"one":"vds","two":"sd","three":"iu"}]
#>>>        one  two  three
#   first   lim  dsm   NaN
#   second  vds   sd    iu

key作columns,几个字典则有几行,可定义index

如果其中某个元素值缺失,即字典的 key 无法找到对应的 value,将使用 NaN 代替

!!!如果有columns=[“one”],则根据索引只打出这一列,若有columns=[“oneone”]这种未存在的,则打出"NaN"

Series创建

可以传递一个字典形式的 Series

import pandas as pd
s={"one":pd.Series((1,2),index=["first","second"]),
   "two":pd.Series((3,4,7),index=["first","third","last"])}
df=pd.DataFrame[s]
print(df)
###>>>       one  two
#            first   1.0  3.0
#            last    NaN  7.0
#            second  2.0  NaN
#            third   NaN  4.0

(2)列索引columns

选取 列

import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df ['one'])

添加新列

#df[“columns”]=value
df["three"]=pd.Series((1,2),index="a","b")   
#加法
df["sum"]=df["one"]+df["three"]
#insert()
df.insert(2,columns="sports",value=["soccer","run"])

”2“表示插入columns这列的索引位置

删除列

del()
del df["first"]
pop()
df.pop("last")

(3)行索引index

选取

loc()
s={"name":pd.Series(["mm","fn"],index=["one","two"]),"age":pd.Series(["dw","err","sda"],index=["two","three","four"])}
df=pd.DataFrame(s)
print(df)                  #>>>name  age
                       # four   NaN  sda
                       # one     mm  NaN
                       # three  NaN  err
                       # two     fn   dw
print(df.loc["two"])
#>>>name    fn
#    age     dw
#   Name: two, dtype: object

loc()可以传递index和columns,以“,”隔开。来锁定特定一个元素

iloc()
print(df.iloc[0]

[]里是行数索引如0,1,2…不是index名字

切片选取多行
print(df[1:3])

左闭右开

添加行
append()
df3=pd.DataFrame([[3,4],[1,2]],columns=["name","age"])

在行末追加数据行

删除行
drop()
df=df.drop(1)

(4)统计上

sum()

默认axis=0或者使用sum(“index”),可以加字符

cumsum() #计算累计和

axis=0 行,按垂直方向进行计算 ; axis=1 列,按水平方向进行计算

可以加字符

mean()
median()
mode() #求众数
std() #标准差
min()
max()
abs()
prod() #积
cumprod() #计算累计积

axis=0 行, 按垂直方向进行计算 ; axis=1 列,按水平方向进行计算

describe() #输出了平均值、std 和 IQR 值(四分位距)等一系列统计信息

也可提供include可筛选字符列、数字列信息

相关参数:object 对字符列统计;number 对数字列统计;all 汇总所有列

print(df.describe(include=["object"]))

3.读取文件

read_csv()

从 CSV 文件中读取数据,并创建 DataFrame 对象

自定义索引 index_col
import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desk/personal.csv",index_col=['name'])
print(df)
跳过指定行数 skiprows
df=pd.read_csv("C:/Users/Administrator/Deskt/personal.csv",skiprows=4)
### skiprows=4的4是行数,不是索引为5的行

to_excel()

file="xxx.xlsx"
df=pd.read_excel(file,sheet_name="sheet2")
df2=pd.read_excel(file,sheet_name=[0,2,"sheet1"])
#返回第一、三张、及名为“sheet”的工作表
sheet_name 指定工作表名

sheet_name:指定工作表名,默认第一个。返回DataFrame类型数据

header 指定标题行(列名)
df2=pd.read_excel(file,sheet_name="sheet1",header=1)

指定第二行为标题行。header默认第一行。

names 指定列名

如果数据已经有列名了,则替换掉原有的列名

df3=pd.read_excel(file,header=None,names=list("abcde"))
#如果只想使用names,且对源数据不做任何修改,可以指定header=None。因为header默认第一行
index_col 指定列索引
df4=pd.read_excel(file,sheet_name="sheet1",index_col=0)
#指定col=0的列为索引,即第一列数据作为索引
skiprows 跳过指定行数的数据
df= pd.read_excel(file,sheet_name='Sheet1', skiprows=0)

4.保存文件

to_csv()

将 DataFrame 转换为 CSV 数据

如果想要把 CSV 数据写入文件,需向函数传递一个文件路径

de=pd.DataFrame(data)
csv_data=de.to_csv("C:/Users/Administrator/Deskt/personal.csv")

你可能感兴趣的:(pandas,python)