一、pandas series
pandas series 是像数组一样的一维对象,可以存多数种数据类型。
1、创建pandas series
import pandas as pd
students = pd.Series(data=['张三', '男', 23], index=['姓名', '性别', '年龄'])
print(students)
print(students.shape)
print(students.index)
print(students.size)
print(students.values)
print('姓名' in students)
print("身高" in students)
运行结果:
姓名 张三
性别 男
年龄 23
dtype: object
(3,)
Index(['姓名', '性别', '年龄'], dtype='object')
3
['张三' '男' 23]
True
False
2、访问pandas series
import pandas as pd
students = pd.Series(data=['张三', '男', 23], index=['姓名', '性别', '年龄'])
print(students['姓名'])
print(students[['姓名', '年龄']])
print(students[1])
print(students[[0, 1, 2]])
print(students.loc['姓名'])
print(students.iloc[0])
# 修改
students['年龄'] = 25
print(students['年龄'])
#删除inplace = True 表示在元序列中修改
students.drop('性别', inplace=True)
print(students)
3、pandas series 运算
import pandas as pd
import numpy as np
list = pd.Series(data=[10, 20, 30], index=['apple', 'oranges', 'banner'])
#计算 * 2
print(list * 2)
print(list['apple'] * 5)
print(list[['apple', 'banner']] * 3)
print(np.power(list, 2))
#输入出元素是否小于20
print(list < 20)
运行结果:
apple 20
oranges 40
banner 60
dtype: int64
50
apple 30
banner 90
dtype: int64
apple 100
oranges 400
banner 900
dtype: int64
apple True
oranges False
banner False
dtype: bool
二、pandas dataframe
dataframe 是一个有行有列的二维结构,类似Excel的那种结构。
import pandas as pd
item = {
"alice": pd.Series([245, 24, 50], ['bike', 'pants', 'watch']),
'lucy': pd.Series([40, 100, 500, 45], ['book', 'glasses', 'bike', 'pants'])
}
print(type(item))
shopping_card = pd.DataFrame(item)
print(shopping_card)
print(shopping_card.shape)
print(shopping_card.ndim)
print(shopping_card.size)
#列选择
shopping_card = pd.DataFrame(item, columns=['lucy'])
print(shopping_card)
#行选择
shopping_card = pd.DataFrame(item, index=['book', 'bike'])
print(shopping_card)
#行 列 选择
shopping_card = pd.DataFrame(item, index=['book', 'bike'], columns=['lucy'])
print(shopping_card)
data = {'int': [1, 2, 3], 'float': [1.1, 2.2, 3.3]}
#创建方式二
shopping_card = pd.DataFrame(data=data)
print(shopping_card)
shopping_card = pd.DataFrame(data=data, index=['label_1', 'label_2', 'label_3'])
print(shopping_card)
#创建方式三
data = [{'book': 20, 'bike': 50}, {'book': 70, 'bike': 80, 'watch': 90}]
shopping_card = pd.DataFrame(data=data)
print(shopping_card)
#访问pandas中的数据 指定列
print(shopping_card[['book', 'watch']])
#访问pandas中的数据 指定行
print(shopping_card.loc[[0]])
#访问pandas中的数据 指定列 and行
print(shopping_card['book'][0])
#增加1列
shopping_card['phone'] = [100, 110]
print(shopping_card)
#计算
shopping_card['total'] = shopping_card['book'] + shopping_card['bike'] + shopping_card['watch'] + shopping_card['phone']
print(shopping_card)
#删除列
shopping_card = shopping_card.drop(['total', 'phone'], axis=1)
print(shopping_card)
#删除行
shopping_card = shopping_card.drop([1], axis=0)
print(shopping_card)
处理NAN值
import pandas as pd
item = {
"alice": pd.Series([245, 24, 50], ['bike', 'pants', 'watch']),
'lucy': pd.Series([40, 100, 500, 45], ['book', 'glasses', 'bike', 'pants'])
}
shopping_card = pd.DataFrame(item)
print(shopping_card)
print("------------------------")
#is返回返回一个shopping_card大小的dataframe 里面的值为True和False, True表示为NAN值
print(shopping_card.isnull())
print("------------------------")
#统计NaN 的 次数
print(shopping_card.isnull().sum().sum())
print("------------------------")
#删除有NaN的行 axis = 1 列
del_nan = shopping_card.dropna(axis=0)
print(del_nan)
print("------------------------")
#替换nan为0
fill_nan = shopping_card.fillna(0)
print(fill_nan)
print("------------------------")
其他
import pandas as pd
#读取csv文件 转换为dataframe
data = pd.read_csv('/opt/sss.csv')
#获取前5行
data.head()
#获取最后5行
data.tail()
#我们还可以选择使用 .head(N) 或 .tail(N) 分别显示前 N 行和后 N 行数据
#统计信息
data.describe()
#查看单列的统计信息
data['xxx'].describe()
#可以统计类方法max,min,mean等方法
data.max()
#统计数据的关联性,关联性值为 1 表明关联性很高,关联性值为 0 告诉我们数据根本不相关。
data.corr()
#按照xxxx列聚合数据
data.groupby('xxxx')