DataFrame là cấu trúc dữ liệu được sử dụng phổ biến nhất trong gấu trúc. Do đó, điều rất quan trọng là tìm hiểu các chi tiết cụ thể khác nhau về cách làm việc với DataFrame. Sau khi tạo DataFrame, bây giờ chúng ta hãy đi sâu vào một số phương thức để làm việc với nó.
Bắt đầu
Nhập các thư viện này : pandas
, mattplotlib
để vẽ đồ thị , numpy
.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import random
Nếu bạn đang làm việc với máy tính xách tay Jupyter [hoặc iPython] và muốn hiển thị biểu đồ nội tuyến, hãy sử dụng định nghĩa này.
%matplotlib inline
Bây giờ chúng ta hãy tải một số dữ liệu CSV vào DataFrame của chúng tôi để làm việc với nó. Dữ liệu chúng tôi đã tải là Báo cáo Hạnh phúc Thế giới 2016 .
x = pd.read_csv['2016.csv']
Chi tiết khung dữ liệu
Mục lục
Thuộc tính index
hiển thị nhãn chỉ mục hàng.
x = pd.read_csv['2016.csv']
print x.index
# prints
RangeIndex[start=0, stop=157, step=1]
Chỉ số là RangeIndex
nếu các nhãn là số nguyên liền kề.
Cột
Lấy các cột bằng cách sử dụng thuộc tính columns
.
print x.columns
# prints
Index[[u'Country', u'Region', u'Happiness Rank', u'Happiness Score',
u'Lower Confidence Interval', u'Upper Confidence Interval',
u'Economy [GDP per Capita]', u'Family', u'Health [Life Expectancy]',
u'Freedom', u'Trust [Government Corruption]', u'Generosity',
u'Dystopia Residual'],
dtype='object']
Giá trị
Mảng giá trị thô có thể được trích xuất bằng cách sử dụng values
.
print x.values
# prints
[['Denmark' 'Western Europe' 1 ..., 0.44453000000000004 0.36171 2.73939]
['Switzerland' 'Western Europe' 2 ..., 0.41203 0.28083 2.69463]
['Iceland' 'Western Europe' 3 ..., 0.14975 0.47678000000000004 2.83137]
...,
['Togo' 'Sub-Saharan Africa' 155 ..., 0.11587 0.17517 2.1354]
['Syria' 'Middle East and Northern Africa' 156 ..., 0.17232999999999998
0.48396999999999996 0.81789]
['Burundi' 'Sub-Saharan Africa' 157 ..., 0.09419 0.2029 2.1040400000000004]]
Hình dạng
Nhận một bộ số lượng hàng và cột của DataFrame bằng shape
thuộc tính.
x.shape
# prints
[157, 13]
Kích thước
Sử dụng count[]
phương pháp để truy xuất số lượng phần
tử [không phải NaN] trong mỗi cột. Phương pháp này bỏ qua mọi phần tử NaN trong cột.
print x.count[]
# prints
Country 157
Region 157
Happiness Rank 157
Happiness Score 157
Lower Confidence Interval 157
Upper Confidence Interval 157
Economy [GDP per Capita] 157
Family 157
Health [Life Expectancy] 157
Freedom 157
Trust [Government Corruption] 157
Generosity 157
Dystopia Residual 157
dtype: int64
Và size
thuộc tính trả về tổng số phần tử [bao gồm NaN] trong DataFrame. Điều này có nghĩa là giá trị [mũi tên * ncols].
print x.size
# prints
2041
Số liệu thống kê
Lấy số liệu thống kê chi tiết của DataFrame bằng phương pháp describe[]
. Trả về các chi tiết khác nhau như giá trị trung bình, tối thiểu, tối đa, v.v. cho mỗi cột.
print x.describe[]
# prints
Happiness Rank Happiness Score Lower Confidence Interval \
count 157.000000 157.000000 157.000000
mean 78.980892 5.382185 5.282395
std 45.466030 1.141674 1.148043
min 1.000000 2.905000 2.732000
25% 40.000000 4.404000 4.327000
50% 79.000000 5.314000 5.237000
75% 118.000000 6.269000 6.154000
max 157.000000 7.526000 7.460000
Upper Confidence Interval Economy [GDP per Capita] Family \
count 157.000000 157.000000 157.000000
mean 5.481975 0.953880 0.793621
std 1.136493 0.412595 0.266706
...
Đầu và đuôi
Các
head[]
phương pháp lấy năm hàng đầu tiên từ DataFrame.
x = pd.read_csv['big-data/Salaries.csv']
print x.head[]
# prints
yearID teamID lgID playerID salary
0 1985 ATL NL barkele01 870000
1 1985 ATL NL bedrost01 550000
2 1985 ATL NL benedbr01 545000
3 1985 ATL NL campri01 633333
4 1985 ATL NL ceronri01 625000
Và phương thức đuôi lấy năm hàng cuối cùng.
print x.tail[]
# prints
yearID teamID lgID playerID salary
26423 2016 WSN NL strasst01 10400000
26424 2016 WSN NL taylomi02 524000
26425 2016 WSN NL treinbl01 524900
26426 2016 WSN NL werthja01 21733615
26427 2016 WSN NL zimmery01 14000000
Các phương thức tích lũy trả về một DataFrame với hàm tích lũy thích hợp được áp dụng cho các hàng. Một số thao tác không hợp lệ đối với các cột không phải là số.
Tổng tích lũy
cumsum[]
[tổng tích lũy] : Giá trị của mỗi hàng được thay thế bằng tổng của tất cả các hàng trước bao gồm hàng này.
Các hàng giá trị chuỗi sử dụng nối như dưới đây.
y = pd.DataFrame[{'one': pd.Series[range[5]],
'two': pd.Series[range[5, 10]],
'three': pd.Series[list['abcde']]}]
print 'head =>\n', y.head[], '\n'
print 'cumsum =>\n', y.cumsum[], '\n'
# prints
head =>
one three two
0 0 a 5
1 1 b 6
2 2 c 7
3 3 d 8
4 4 e 9
cumsum =>
one three two
0 0 a 5
1 1 ab 11
2 3 abc 18
3 6 abcd 26
4 10 abcde 35
Sản phẩm tích lũy
cumprod[]
[c sản phẩm tích lũy] : Giá trị hàng được thay thế bằng sản phẩm của tất cả các hàng trước. Phương pháp này không áp dụng cho các hàng không số. Nếu có các hàng không phải là số trong Khung dữ liệu, bạn sẽ cần trích xuất một tập hợp con của Khung dữ liệu như được hiển thị.
print 'cumprod =>\n', y[['one', 'two']].cumprod[], '\n'
# prints
cumprod =>
one two
0 0 5
1 0 30
2 0 210
3 0 1680
4 0 15120
Tích lũy tối đa
cummax[]
[tích
lũy tối đa] : Giá trị của hàng được thay thế bằng giá trị tối đa của tất cả các hàng trước cho đến nay. Trong ví dụ dưới đây, để thể hiện phương thức này, chúng tôi sử dụng phương thức này trên các hàng đảo ngược của DataFrame gốc.
print 'rev =>\n', y.iloc[::-1], '\n',
print 'cummax =>\n', y.iloc[::-1].cummax[], '\n'
# prints
rev =>
one three two
4 4 e 9
3 3 d 8
2 2 c 7
1 1 b 6
0 0 a 5
cummax =>
one three two
4 4 e 9
3 4 e 9
2 4 e 9
1 4 e 9
0 4 e 9
Tích lũy tối thiểu
cummin[]
: Tương tự như cummax, ngoại trừ tính toán tối thiểu các giá trị cho đến hàng này.
print 'cummin =>\n', y.cummin[], '\n'
# prints
cummin =>
one three two
0 0 a 5
1 0 a 5
2 0 a 5
3 0 a 5
4 0 a 5
Chỉ số giá trị tối thiểu và tối đa
Sử dụng các phương
thức idxmin[]
và idxmax[]
để có được nhãn chỉ mục của các hàng chứa giá trị tối thiểu và tối đa. Chỉ áp dụng cho các cột số, vì vậy các cột không phải là số cần được lọc ra.
y = pd.DataFrame[{'one': pd.Series[random.sample[xrange[100], 5], index=list['abcde']],
'two': pd.Series[random.sample[xrange[100], 5], index=list['abcde']],
'three': pd.Series[list['ABCDE'], index=list['abcde']]}]
print y, '\n'
print 'idxmax =>\n', y[['one', 'two']].idxmax[], '\n'
print 'idxmin =>\n', y[['one', 'two']].idxmin[], '\n'
# prints
one three two
a 48 A 25
b 38 B 13
c 62 C 91
d 79 D 32
e 2 E 42
idxmax =>
one d
two c
dtype: object
idxmin =>
one e
two b
dtype: object
Đếm giá trị
Phương thức value_counts[]
trả về số lần mỗi giá trị được lặp lại trong cột. Lưu ý: đây không phải là phương pháp DataFrame; thay vào đó, nó được áp dụng trên một cột [là đối tượng Sê-ri].
x = pd.read_csv['big-data/Salaries.csv']
print 'top 10 =>\n', x.head[10], '\n'
print 'value_counts =>\n', x['yearID'].value_counts[].head[10]
# prints
top 10 =>
yearID teamID lgID playerID salary
0 1985 ATL NL barkele01 870000
1 1985 ATL NL bedrost01 550000
2 1985 ATL NL benedbr01 545000
3 1985 ATL NL campri01 633333
4 1985 ATL NL ceronri01 625000
5 1985 ATL NL chambch01 800000
6 1985 ATL NL dedmoje01 150000
7 1985 ATL NL forstte01 483333
8 1985 ATL NL garbege01 772000
9 1985 ATL NL harpete01 250000
value_counts =>
1999 1006
1998 998
1995 986
1996 931
1997 925
1993 923
1994 884
1990 867
2001 860
2008 856
Name: yearID, dtype: int64
Tóm lược
Chúng tôi đã đề cập đến một số khía cạnh của DataFrame trong bài viết này. Các cách học chi tiết khác nhau của DataFrame bao gồm kích thước, hình dạng, số liệu thống kê, v.v. đã được trình bày.
7 hữu ích 0 bình luận 26k xem chia sẻ